diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index c522def..f1c82c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public AppCostmapResponseDTO getCostMap(String robotId) { + return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -98,5 +103,4 @@ Integer currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_INIT + robotId); return currId; } - } \ No newline at end of file diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index c522def..f1c82c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public AppCostmapResponseDTO getCostMap(String robotId) { + return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -98,5 +103,4 @@ Integer currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_INIT + robotId); return currId; } - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index c06b7fb..777f3ec 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RobotInfoMapper; import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.DeviceInfo; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.modular.robot.utils.PcdDownUtil; import org.springframework.beans.factory.annotation.Value; @@ -27,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; +import java.math.BigDecimal; import java.net.URL; import java.net.URLEncoder; import java.util.List; @@ -47,16 +52,17 @@ private final IRouteInfoService routeInfoService; private final IDeviceInfoService deviceInfoService; private final IRobotPointInfoService pointInfoService; - + private final IBaseRobotService baseRobotService; @Value("${casic.file.uploadPath}") private String filePath; - public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService) { + public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService, @Lazy IBaseRobotService baseRobotService) { this.robotStatusInfoService = robotStatusInfoService; this.dictService = dictService; this.routeInfoService = routeInfoService; this.deviceInfoService = deviceInfoService; this.pointInfoService = pointInfoService; + this.baseRobotService = baseRobotService; } @Transactional @@ -93,16 +99,24 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null) { + if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - } - if (robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + //下发障碍物栅格 + sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } + private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + CostMapResolutionRequest request = new CostMapResolutionRequest(); + request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setRobotId(robotId); + //发送栅格分辨率设定 + baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); + } + @Override public void loadPcd(RobotInfo info) { File file = new File(filePath + "finalCloud_" + info.getId() + ".pcd"); @@ -118,17 +132,27 @@ try { RobotInfo info = getById(routeInfo.getRobotId()); - String routeName = URLEncoder.encode( routeInfo.getRouteName(),"UTF-8"); - String urlPath = info.getTrajectoryPath() +routeName + "/" + routeName + ".txt"; + String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); + String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; URL url = new URL(urlPath); List list = FileUtil.readLines(url, "UTF-8"); - pointInfoService.saveList(list,routeInfo); + pointInfoService.saveList(list, routeInfo); } catch (IOException e) { e.printStackTrace(); } } + @Override + public void updateRobotGrid(String robotId, AppCostmapResponseDTO dto) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(RobotInfo::getGridNumber, dto.getWidth()); + lambdaUpdateWrapper.set(RobotInfo::getOriginX,dto.getOrigin_x()); + lambdaUpdateWrapper.set(RobotInfo::getOriginY,dto.getOrigin_y()); + lambdaUpdateWrapper.eq(RobotInfo::getId, robotId); + update(lambdaUpdateWrapper); + } + @Transactional @Override public List list(Wrapper queryWrapper) { diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index c522def..f1c82c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public AppCostmapResponseDTO getCostMap(String robotId) { + return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -98,5 +103,4 @@ Integer currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_INIT + robotId); return currId; } - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index c06b7fb..777f3ec 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RobotInfoMapper; import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.DeviceInfo; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.modular.robot.utils.PcdDownUtil; import org.springframework.beans.factory.annotation.Value; @@ -27,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; +import java.math.BigDecimal; import java.net.URL; import java.net.URLEncoder; import java.util.List; @@ -47,16 +52,17 @@ private final IRouteInfoService routeInfoService; private final IDeviceInfoService deviceInfoService; private final IRobotPointInfoService pointInfoService; - + private final IBaseRobotService baseRobotService; @Value("${casic.file.uploadPath}") private String filePath; - public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService) { + public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService, @Lazy IBaseRobotService baseRobotService) { this.robotStatusInfoService = robotStatusInfoService; this.dictService = dictService; this.routeInfoService = routeInfoService; this.deviceInfoService = deviceInfoService; this.pointInfoService = pointInfoService; + this.baseRobotService = baseRobotService; } @Transactional @@ -93,16 +99,24 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null) { + if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - } - if (robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + //下发障碍物栅格 + sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } + private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + CostMapResolutionRequest request = new CostMapResolutionRequest(); + request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setRobotId(robotId); + //发送栅格分辨率设定 + baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); + } + @Override public void loadPcd(RobotInfo info) { File file = new File(filePath + "finalCloud_" + info.getId() + ".pcd"); @@ -118,17 +132,27 @@ try { RobotInfo info = getById(routeInfo.getRobotId()); - String routeName = URLEncoder.encode( routeInfo.getRouteName(),"UTF-8"); - String urlPath = info.getTrajectoryPath() +routeName + "/" + routeName + ".txt"; + String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); + String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; URL url = new URL(urlPath); List list = FileUtil.readLines(url, "UTF-8"); - pointInfoService.saveList(list,routeInfo); + pointInfoService.saveList(list, routeInfo); } catch (IOException e) { e.printStackTrace(); } } + @Override + public void updateRobotGrid(String robotId, AppCostmapResponseDTO dto) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(RobotInfo::getGridNumber, dto.getWidth()); + lambdaUpdateWrapper.set(RobotInfo::getOriginX,dto.getOrigin_x()); + lambdaUpdateWrapper.set(RobotInfo::getOriginY,dto.getOrigin_y()); + lambdaUpdateWrapper.eq(RobotInfo::getId, robotId); + update(lambdaUpdateWrapper); + } + @Transactional @Override public List list(Wrapper queryWrapper) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 4646c2c..e2ef771 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -11,11 +12,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; +import com.casic.missiles.modular.robot.dto.GridPointDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; @@ -225,8 +228,7 @@ @Override public void saveStopState(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>(){}); if (responseDTO != null && responseDTO.getMsg() != null) { log.info("急停状态保存:{}", responseDTO.getMsg()); LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); @@ -259,17 +261,32 @@ update(query); } } + } + /** + * 机器人栅格数据 + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + @Override + public void saveCostMap(String robotId, MqttMessage message) { + //数据接收 + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() {}); + if (responseDTO != null && responseDTO.getMsg() != null) { + cacheService.updateCostMap(robotId, responseDTO.getMsg()); + robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); +// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); + } } @Override - public void saveCostMap(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); - if (responseDTO != null && responseDTO.getMsg() != null) { - cacheService.updateCostMap(robotId, responseDTO.getMsg()); - log.info("----------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); - } + public void updateRobotPoint(PoseMessageResponseDTO dto, String robotId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("postion_x", dto.getX()); + query.set("postion_y", dto.getY()); + query.set("postion_z", dto.getZ()); + query.eq("robot_id", robotId); + update(query); } private RobotResponseDTO parseJson(MqttMessage message, TypeReference> cls) { diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index c522def..f1c82c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public AppCostmapResponseDTO getCostMap(String robotId) { + return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -98,5 +103,4 @@ Integer currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_INIT + robotId); return currId; } - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index c06b7fb..777f3ec 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RobotInfoMapper; import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.DeviceInfo; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.modular.robot.utils.PcdDownUtil; import org.springframework.beans.factory.annotation.Value; @@ -27,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; +import java.math.BigDecimal; import java.net.URL; import java.net.URLEncoder; import java.util.List; @@ -47,16 +52,17 @@ private final IRouteInfoService routeInfoService; private final IDeviceInfoService deviceInfoService; private final IRobotPointInfoService pointInfoService; - + private final IBaseRobotService baseRobotService; @Value("${casic.file.uploadPath}") private String filePath; - public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService) { + public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService, @Lazy IBaseRobotService baseRobotService) { this.robotStatusInfoService = robotStatusInfoService; this.dictService = dictService; this.routeInfoService = routeInfoService; this.deviceInfoService = deviceInfoService; this.pointInfoService = pointInfoService; + this.baseRobotService = baseRobotService; } @Transactional @@ -93,16 +99,24 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null) { + if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - } - if (robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + //下发障碍物栅格 + sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } + private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + CostMapResolutionRequest request = new CostMapResolutionRequest(); + request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setRobotId(robotId); + //发送栅格分辨率设定 + baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); + } + @Override public void loadPcd(RobotInfo info) { File file = new File(filePath + "finalCloud_" + info.getId() + ".pcd"); @@ -118,17 +132,27 @@ try { RobotInfo info = getById(routeInfo.getRobotId()); - String routeName = URLEncoder.encode( routeInfo.getRouteName(),"UTF-8"); - String urlPath = info.getTrajectoryPath() +routeName + "/" + routeName + ".txt"; + String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); + String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; URL url = new URL(urlPath); List list = FileUtil.readLines(url, "UTF-8"); - pointInfoService.saveList(list,routeInfo); + pointInfoService.saveList(list, routeInfo); } catch (IOException e) { e.printStackTrace(); } } + @Override + public void updateRobotGrid(String robotId, AppCostmapResponseDTO dto) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(RobotInfo::getGridNumber, dto.getWidth()); + lambdaUpdateWrapper.set(RobotInfo::getOriginX,dto.getOrigin_x()); + lambdaUpdateWrapper.set(RobotInfo::getOriginY,dto.getOrigin_y()); + lambdaUpdateWrapper.eq(RobotInfo::getId, robotId); + update(lambdaUpdateWrapper); + } + @Transactional @Override public List list(Wrapper queryWrapper) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 4646c2c..e2ef771 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -11,11 +12,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; +import com.casic.missiles.modular.robot.dto.GridPointDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; @@ -225,8 +228,7 @@ @Override public void saveStopState(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>(){}); if (responseDTO != null && responseDTO.getMsg() != null) { log.info("急停状态保存:{}", responseDTO.getMsg()); LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); @@ -259,17 +261,32 @@ update(query); } } + } + /** + * 机器人栅格数据 + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + @Override + public void saveCostMap(String robotId, MqttMessage message) { + //数据接收 + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() {}); + if (responseDTO != null && responseDTO.getMsg() != null) { + cacheService.updateCostMap(robotId, responseDTO.getMsg()); + robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); +// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); + } } @Override - public void saveCostMap(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); - if (responseDTO != null && responseDTO.getMsg() != null) { - cacheService.updateCostMap(robotId, responseDTO.getMsg()); - log.info("----------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); - } + public void updateRobotPoint(PoseMessageResponseDTO dto, String robotId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("postion_x", dto.getX()); + query.set("postion_y", dto.getY()); + query.set("postion_z", dto.getZ()); + query.eq("robot_id", robotId); + update(query); } private RobotResponseDTO parseJson(MqttMessage message, TypeReference> cls) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 7e02ebc..bb066f4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -56,9 +56,12 @@ //读取导航状态,如果导航未开启则不存储 RobotStatusInfo statusInfo = robotStatusInfoService.getStatusByRobotId(robotId); if (statusInfo != null && responseDTO.getMsg() != null) { + PoseMessageResponseDTO dto = responseDTO.getMsg(); //执行循迹 保存当前轨迹信息 + //更新实时定位信息 + robotStatusInfoService.updateRobotPoint(dto,robotId); + infoService.pointTestCallBack(dto, robotId); if (statusInfo.getCurrRouteId() != null) { - PoseMessageResponseDTO dto = responseDTO.getMsg(); RobotTrajectoryInfo info = new RobotTrajectoryInfo(); info.setRobotId(Long.valueOf(robotId)); info.setCreateTime(new Date()); diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index c3bbbb1..2b9dd40 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -130,6 +130,7 @@ DeviceCommon.addOrUpdateDeviceInfo(deviceInfo.getDeviceIp(), userId, null, m_lSerialHandle.longValue()); } } + return m_lSerialHandle.longValue(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java index 3b4b676..2c5b021 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/DetectorConfigController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.neutron.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; @@ -41,7 +42,10 @@ @PostMapping(value = "/addConfig") @ResponseBody public ResponseDataDTO add(DetectorConfig config) { - return ResponseDataDTO.success(configService.save(config)); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DetectorConfig::getDetectorId,config.getDetectorId()); + configService.saveOrUpdate(config,query); + return ResponseDataDTO.success(); } @ApiOperation("下发参数") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java index b6e4611..ee06f87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/DetectorConfig.java @@ -27,7 +27,7 @@ /** * 主键id */ - @ApiModelProperty(value = "降压时间") + @ApiModelProperty(value = "主键") @TableId("ID") private Long id; /** @@ -35,7 +35,6 @@ */ @ApiModelProperty(value = "探测器id") @TableField("DETECTOR_ID") - private Long detectorId; /** * 高压参数 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 2c874c2..4e8a88f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -148,6 +148,10 @@ @TableField("origin_y") private BigDecimal originY; + @ApiModelProperty(value = "栅格原点坐标z", dataType = "BigDecimal") + @TableField("origin_z") + private BigDecimal originZ; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 78d5ec0..d74a38b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,7 +14,7 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), - COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , false, new TypeReference>() { }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), @@ -53,7 +53,7 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), - SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , false, new TypeReference>() { }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java index 551bafd..d4a2e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -33,6 +33,8 @@ private BigDecimal origin_y; /** * 障碍物栅格数据 + * 有左至右 + * 有下至上 顺序排列 */ - private List data; + private List data; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index ea3ac98..0949256 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -91,4 +91,11 @@ * @param msg 消息 */ void updateCostMap(String robotId, AppCostmapResponseDTO msg); + + /** + * 读取栅格障碍物信息 + * @param robotId 机器人ID + * @return + */ + AppCostmapResponseDTO getCostMap(String robotId); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index d7edaee..8c95459 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import java.util.List; @@ -44,4 +45,11 @@ * @param routeInfo 路线信息 */ void loadTrack(RouteInfo routeInfo); + + /** + * 消息更新机器人grid信息 + * @param robotId 机器人ID + * @param dto 栅格信息 + */ + void updateRobotGrid(String robotId, AppCostmapResponseDTO dto); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 1675445..2af210a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.List; @@ -101,4 +102,11 @@ * @param message 消息体 */ void saveCostMap(String robotId, MqttMessage message); + + /** + * 更新实时定位ID + * @param dto 定位信息 + * @param robotId 机器人id + */ + void updateRobotPoint(PoseMessageResponseDTO dto,String robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index c41e16a..0144d86 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -51,7 +51,7 @@ * @param dto 实体 */ void pointCallBack(PoseMessageResponseDTO dto, String robotId); - + void pointTestCallBack(PoseMessageResponseDTO dto, String robotId); /** * 图片路径保存 * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index c522def..f1c82c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -82,6 +82,11 @@ } @Override + public AppCostmapResponseDTO getCostMap(String robotId) { + return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -98,5 +103,4 @@ Integer currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_INIT + robotId); return currId; } - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index c06b7fb..777f3ec 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RobotInfoMapper; import com.casic.missiles.modular.robot.dto.RobotInfoSetDTO; import com.casic.missiles.modular.robot.model.DeviceInfo; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.modular.robot.utils.PcdDownUtil; import org.springframework.beans.factory.annotation.Value; @@ -27,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; +import java.math.BigDecimal; import java.net.URL; import java.net.URLEncoder; import java.util.List; @@ -47,16 +52,17 @@ private final IRouteInfoService routeInfoService; private final IDeviceInfoService deviceInfoService; private final IRobotPointInfoService pointInfoService; - + private final IBaseRobotService baseRobotService; @Value("${casic.file.uploadPath}") private String filePath; - public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService) { + public RobotInfoServiceImpl(@Lazy IRobotStatusInfoService robotStatusInfoService, AbstractDictService dictService, @Lazy IRouteInfoService routeInfoService, @Lazy IDeviceInfoService deviceInfoService, @Lazy IRobotPointInfoService pointInfoService, @Lazy IBaseRobotService baseRobotService) { this.robotStatusInfoService = robotStatusInfoService; this.dictService = dictService; this.routeInfoService = routeInfoService; this.deviceInfoService = deviceInfoService; this.pointInfoService = pointInfoService; + this.baseRobotService = baseRobotService; } @Transactional @@ -93,16 +99,24 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null) { + if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - } - if (robotInfo.getGridNumber() != null) { update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + //下发障碍物栅格 + sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } + private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + CostMapResolutionRequest request = new CostMapResolutionRequest(); + request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setRobotId(robotId); + //发送栅格分辨率设定 + baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); + } + @Override public void loadPcd(RobotInfo info) { File file = new File(filePath + "finalCloud_" + info.getId() + ".pcd"); @@ -118,17 +132,27 @@ try { RobotInfo info = getById(routeInfo.getRobotId()); - String routeName = URLEncoder.encode( routeInfo.getRouteName(),"UTF-8"); - String urlPath = info.getTrajectoryPath() +routeName + "/" + routeName + ".txt"; + String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); + String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; URL url = new URL(urlPath); List list = FileUtil.readLines(url, "UTF-8"); - pointInfoService.saveList(list,routeInfo); + pointInfoService.saveList(list, routeInfo); } catch (IOException e) { e.printStackTrace(); } } + @Override + public void updateRobotGrid(String robotId, AppCostmapResponseDTO dto) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(RobotInfo::getGridNumber, dto.getWidth()); + lambdaUpdateWrapper.set(RobotInfo::getOriginX,dto.getOrigin_x()); + lambdaUpdateWrapper.set(RobotInfo::getOriginY,dto.getOrigin_y()); + lambdaUpdateWrapper.eq(RobotInfo::getId, robotId); + update(lambdaUpdateWrapper); + } + @Transactional @Override public List list(Wrapper queryWrapper) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 4646c2c..e2ef771 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -11,11 +12,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; +import com.casic.missiles.modular.robot.dto.GridPointDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RobotStatusInfo; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; @@ -225,8 +228,7 @@ @Override public void saveStopState(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>(){}); if (responseDTO != null && responseDTO.getMsg() != null) { log.info("急停状态保存:{}", responseDTO.getMsg()); LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); @@ -259,17 +261,32 @@ update(query); } } + } + /** + * 机器人栅格数据 + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + @Override + public void saveCostMap(String robotId, MqttMessage message) { + //数据接收 + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() {}); + if (responseDTO != null && responseDTO.getMsg() != null) { + cacheService.updateCostMap(robotId, responseDTO.getMsg()); + robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); +// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); + } } @Override - public void saveCostMap(String robotId, MqttMessage message) { - RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { - }); - if (responseDTO != null && responseDTO.getMsg() != null) { - cacheService.updateCostMap(robotId, responseDTO.getMsg()); - log.info("----------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); - } + public void updateRobotPoint(PoseMessageResponseDTO dto, String robotId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("postion_x", dto.getX()); + query.set("postion_y", dto.getY()); + query.set("postion_z", dto.getZ()); + query.eq("robot_id", robotId); + update(query); } private RobotResponseDTO parseJson(MqttMessage message, TypeReference> cls) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 7e02ebc..bb066f4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -56,9 +56,12 @@ //读取导航状态,如果导航未开启则不存储 RobotStatusInfo statusInfo = robotStatusInfoService.getStatusByRobotId(robotId); if (statusInfo != null && responseDTO.getMsg() != null) { + PoseMessageResponseDTO dto = responseDTO.getMsg(); //执行循迹 保存当前轨迹信息 + //更新实时定位信息 + robotStatusInfoService.updateRobotPoint(dto,robotId); + infoService.pointTestCallBack(dto, robotId); if (statusInfo.getCurrRouteId() != null) { - PoseMessageResponseDTO dto = responseDTO.getMsg(); RobotTrajectoryInfo info = new RobotTrajectoryInfo(); info.setRobotId(Long.valueOf(robotId)); info.setCreateTime(new Date()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java index 9b481ce..31a6f98 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -30,6 +30,7 @@ import com.casic.missiles.modular.robot.opt.instruct.dto.SoftwareStopRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.util.WordUtil; import lombok.SneakyThrows; @@ -44,10 +45,7 @@ import java.io.File; import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -75,6 +73,11 @@ private String uploadPath; @Value("${casic.doc.temp}") private String docTemp; + /** + * 障碍物精度 + */ + @Value("${casic.obstacle:10}") + private Integer obstacle; public TaskInfoServiceImpl(@Lazy IRouteInfoService routeInfoService, IRobotStatusInfoService statusInfoService, AbstractDictService dictService, @Lazy IAlarmRecordService recordService, @Lazy ITaskHeatMapService taskHeatMapService, IAlgorithmService algorithmService, IRobotCacheService cacheService, @Lazy IBaseRobotService baseRobotService) { this.routeInfoService = routeInfoService; @@ -194,6 +197,7 @@ private void closeTask(StartTrackRequest request, String robotId) { //关闭操作 RobotStatusInfo statusInfo = statusInfoService.getStatusByRobotId(robotId); + if (statusInfo.getCurrTaskId() != null) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.set("update_time", new Date()); @@ -203,6 +207,7 @@ update(updateWrapper); CacheUtil.remove(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); } + //清空任务缓存 robotCacheClean(robotId); //清空机器当前任务 @@ -229,11 +234,11 @@ @Transactional @Override public void pointCallBack(PoseMessageResponseDTO dto, String robotId) { + //判定任务是否已经完成初始化 Long longId = Convert.toLong(robotId); Long taskId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); //缓存当前点位信息 - CacheUtil.put(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_XY_POINT + robotId, dto); RobotInfo robotInfo = cacheService.getRobotInfo(longId); if (robotInfo.getAlarmThreshold() == null || robotInfo.getMaxThreshold() == null) { @@ -247,12 +252,15 @@ log.info("循迹任务,不做处理"); return; } - + //算法初始化状态读取 Integer initValue = cacheService.readTaskInit(longId); + //slam经纬度转栅格 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(),robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + //No.1 任务初始化 if (initValue != 1) { + //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); @@ -261,6 +269,7 @@ //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } + } //No.2 任务执行中 @@ -268,12 +277,14 @@ //判断栅格变化 GridPointDTO oldPointDTO = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_POINT + robotId); if (oldPointDTO == null || isChange(pointDTO, oldPointDTO)) { + log.debug("grid change -- robotId:{},taskId:{}", robotId, taskId); CacheUtil.put(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_POINT + robotId, pointDTO); - //算法调用获取热力图 PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); + String obstacle = getObstacle(robotId, pointDTO); + //TO-DO 障碍物判定信息 - pathPlanDTO.setOpen("1,1,1,1,1,1,1,1"); + pathPlanDTO.setOpen(obstacle); //中子源计数率读取 pathPlanDTO.setCount(cacheService.getNeutronCount(longId) + ""); log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); @@ -284,10 +295,11 @@ //是否触发寻源操作 BigDecimal bigCount = new BigDecimal(pathPlanDTO.getCount()); if (bigCount.compareTo(robotInfo.getAlarmThreshold()) >= 0) { - log.debug("task planning-- robotId:{},taskId:{}", robotId, taskId); + log.debug("task planning-- xun dian robotId:{},taskId:{}", robotId, taskId); //机器人寻点指令下发 sendTargetPoint(robotInfo, response); } + //是否触发停止状态 if (bigCount.compareTo(robotInfo.getMaxThreshold()) > 0) { log.debug("task stop-- robotId:{},taskId:{}", robotId, taskId); @@ -300,11 +312,92 @@ //循迹任务结束 closeTask(null, robotId); } + } } } /** + * 回调测试接口 + * + * @param dto + * @param robotId + */ + @Override + public void pointTestCallBack(PoseMessageResponseDTO dto, String robotId) { + //判定任务是否已经完成初始化 + Long longId = Convert.toLong(robotId); + Long taskId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); + + RobotInfo robotInfo = cacheService.getRobotInfo(longId); + //slam经纬度转栅格 + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + System.out.println(JSON.toJSON(pointDTO)); + } + + + /** + * 机器人栅格信息 + * + * @param robotId 机器人ID + * @param currPointDTO 当前栅格信息 + * @return + */ + private String getObstacle(String robotId, GridPointDTO currPointDTO) { + // (x-1, y-1), (x-1, y), (x-1, y+1), (x, y-1), (x, y+1), (x+1, y-1), (x+1, y), (x+1, y+1) + String path = "1,1,1,1,1,1,1,1"; + Integer pointX = currPointDTO.getX().intValue(); + Integer pointY = currPointDTO.getY().intValue(); + + List objs = new ArrayList<>(); + objs.add(new Integer[]{pointX - 1, pointY - 1}); + objs.add(new Integer[]{pointX - 1, pointY}); + objs.add(new Integer[]{pointX - 1, pointY + 1}); + objs.add(new Integer[]{pointX, pointY - 1}); + objs.add(new Integer[]{pointX, pointY + 1}); + objs.add(new Integer[]{pointX + 1, pointY - 1}); + objs.add(new Integer[]{pointX + 1, pointY}); + objs.add(new Integer[]{pointX + 1, pointY + 1}); + + AppCostmapResponseDTO appCostmapResponseDTO = cacheService.getCostMap(robotId); + List res = new ArrayList<>(); + + if (appCostmapResponseDTO != null) { + List obsList = appCostmapResponseDTO.getData(); + for (Integer[] obj : objs) { + Integer accuracy = getGridFromList(obj[0], obj[1], obsList, appCostmapResponseDTO); + if (accuracy != -1 && accuracy < obstacle) { + //可通行 + res.add(0); + } else { + res.add(1); + } + } + } + path = CollectionUtil.join(res, ","); + log.info("obstacle path ---- :{}", path); + return path; + } + + /** + * 获取栅格障碍物信息 + * + * @param x x坐标 + * @param y y坐标 + * @param obsList 障碍物信息 + * @return + */ + private Integer getGridFromList(Integer x, Integer y, List obsList, AppCostmapResponseDTO appCostmapResponseDTO) { + //y*width + x 得到坐标值 + try { + return obsList.get(y * appCostmapResponseDTO.getWidth() + x); + } catch (Exception e) { + log.error("IndexOutOf obsList ..... return -1"); + } + return -1; + } + + /** * 机器人目标栅格设定 * * @param robotInfo 机器人信息 @@ -317,7 +410,7 @@ if (response.getPointNextDTO() != null && !response.getPointNextDTO().equals(nextDTO)) { GridPointDTO gridPointDTO = GridPointDTO.convertGridPoint(response.getPointNextDTO()); //得到寻源栅格数据,转换为栅格目标点位 - GridPointDTO gridCenterPoint = algorithmService.convertGridCenterPoint(gridPointDTO, robotInfo.getGridNumber(), robotInfo.getGridSize(),robotInfo); + GridPointDTO gridCenterPoint = algorithmService.convertGridCenterPoint(gridPointDTO, robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); TargetPointRequest request = new TargetPointRequest(); request.setX(Convert.toStr(gridCenterPoint.getX())); request.setY(Convert.toStr(gridCenterPoint.getY())); @@ -392,7 +485,7 @@ if (CollectionUtil.isNotEmpty(records)) { for (AlarmRecord record : records) { //栅格信息转换 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(record.getX(), record.getY(), info.getGridNumber(), info.getGridSize(),robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(record.getX(), record.getY(), info.getGridNumber(), info.getGridSize(), robotInfo); record.setX(pointDTO.getX()); record.setY(pointDTO.getY()); record.setIndex(index);