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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 a187d6e..0257c90 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 @@ -275,7 +275,7 @@ if (responseDTO != null && responseDTO.getMsg() != null) { cacheService.updateCostMap(robotId, responseDTO.getMsg()); robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); -// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); +// log.info("--------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); } } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 a187d6e..0257c90 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 @@ -275,7 +275,7 @@ if (responseDTO != null && responseDTO.getMsg() != null) { cacheService.updateCostMap(robotId, responseDTO.getMsg()); robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); -// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); +// log.info("--------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); } } 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 8251010..39b3d2c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.robot.service.impl; import cn.afterturn.easypoi.entity.ImageEntity; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -256,16 +257,16 @@ 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.getResolution(), robotInfo); //No.1 任务初始化 if (initValue != 1) { //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { - PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); + PathInitDTO pathInitDTO = createInitDTO(robotInfo, pointDTO, taskId, robotId); //中子源计数率读取 - pathInitDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathInitDTO.setCount(cacheService.getNeutronCount(longId)); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -280,13 +281,13 @@ 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); + PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo, pointDTO, taskId, robotId); + //可通行标记为1 不可通行标记为0 String obstacle = getObstacle(robotId, pointDTO); - //TO-DO 障碍物判定信息 pathPlanDTO.setOpen(obstacle); //中子源计数率读取 - pathPlanDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)); log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); AlgorithmResponse response = algorithmService.pathPlanning(pathPlanDTO); //存储算法输出栅格信息 @@ -331,7 +332,7 @@ RobotInfo robotInfo = cacheService.getRobotInfo(longId); //slam经纬度转栅格 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getResolution(), robotInfo); } @@ -367,9 +368,9 @@ Integer accuracy = getGridFromList(obj[0], obj[1], obsList, appCostmapResponseDTO); if (accuracy != -1 && accuracy < obstacle) { //可通行 - res.add(0); - } else { res.add(1); + } else { + res.add(0); } } } @@ -409,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.getResolution(), robotInfo); TargetPointRequest request = new TargetPointRequest(); request.setX(Convert.toStr(gridCenterPoint.getX())); request.setY(Convert.toStr(gridCenterPoint.getY())); @@ -444,6 +445,7 @@ } updateWrapper.set(TaskInfo::getHeatImg, path); updateWrapper.eq(TaskInfo::getId, imgDTO.getTaskId()); + update(updateWrapper); } @SneakyThrows @@ -484,7 +486,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.getResolution(), robotInfo); record.setX(pointDTO.getX()); record.setY(pointDTO.getY()); record.setIndex(index); @@ -497,33 +499,66 @@ mcaImg.setHeight(600); mcaImg.setWidth(600); mcaImg.setUrl(uploadPath + info.getMcaImg()); - mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + if (StrUtil.isNotEmpty(info.getMcaImg())) { + mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + } params.put("mcaImg", mcaImg); ImageEntity routeImg = new ImageEntity(); routeImg.setHeight(600); routeImg.setWidth(600); routeImg.setUrl(uploadPath + info.getRouteImg()); - routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + if (StrUtil.isNotEmpty(info.getRouteImg())) { + routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + } params.put("routeImg", routeImg); ImageEntity heatImg = new ImageEntity(); heatImg.setHeight(600); heatImg.setWidth(600); heatImg.setUrl(uploadPath + info.getHeatImg()); - heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + if (StrUtil.isNotEmpty(info.getHeatImg())) { + heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + } params.put("heatImg", heatImg); ImageEntity psdImg = new ImageEntity(); psdImg.setHeight(500); psdImg.setWidth(500); psdImg.setUrl(uploadPath + info.getPsdImg()); - psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + if (StrUtil.isNotEmpty(info.getPsdImg())) { + psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + } params.put("psdImg", psdImg); WordUtil.exportOutputStream(docTemp, response.getOutputStream(), params); } + @Override + public void saveImgBase64(ImgDTO imgDTO) { + if (StrUtil.isNotEmpty(imgDTO.getPsdImg())) { + String psdImg = savePng(imgDTO.getTaskId(), "psdImg.png", imgDTO.getPsdImg()); + imgDTO.setPsdImg(psdImg); + } + if (StrUtil.isNotEmpty(imgDTO.getMcaImg())) { + String mcaImg = savePng(imgDTO.getTaskId(), "mcaImg.png", imgDTO.getMcaImg()); + imgDTO.setMcaImg(mcaImg); + } + if (StrUtil.isNotEmpty(imgDTO.getRouteImg())) { + String routeImg = savePng(imgDTO.getTaskId(), "routeImg.png", imgDTO.getRouteImg()); + imgDTO.setRouteImg(routeImg); + } + saveImg(imgDTO); + } + + private String savePng(String taskId, String imgName, String base64) { + String[] bas = base64.split(","); + String fileName = taskId + "/" + imgName; + File file = new File(uploadPath + fileName); + Base64.decodeToFile(bas[1], file); + return fileName; + } + private String saveHeatImg(String taskId) { String newFileName = "task\\" + taskId + ".png"; //读取当前路径图片 @@ -552,21 +587,25 @@ return true; } - private PathPlanDTO createPlanDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathPlanDTO createPlanDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { PathPlanDTO pathPlanDTO = new PathPlanDTO(); + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; pathPlanDTO.setX(pointDTO.getX().intValue() + ""); pathPlanDTO.setY(pointDTO.getY().intValue() + ""); - pathPlanDTO.setXMax(gridNumber); - pathPlanDTO.setYMax(pathPlanDTO.getXMax()); + pathPlanDTO.setXMax(xMax); + pathPlanDTO.setYMax(yMax); pathPlanDTO.setTaskId(taskId); pathPlanDTO.setRobotId(robotId); return pathPlanDTO; } - private PathInitDTO createInitDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathInitDTO createInitDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; PathInitDTO pathInitDTO = new PathInitDTO(); - pathInitDTO.setXMax(gridNumber); - pathInitDTO.setYMax(pathInitDTO.getXMax()); + pathInitDTO.setXMax(xMax); + pathInitDTO.setYMax(yMax); pathInitDTO.setX(pointDTO.getX().intValue() + ""); pathInitDTO.setY(pointDTO.getY().intValue() + ""); pathInitDTO.setTaskId(taskId); @@ -595,8 +634,9 @@ taskInfo.setStartTime(new Date()); taskInfo.setRouteId(routeInfo.getId()); taskInfo.setRobotId(robotInfo.getId()); - taskInfo.setGridNumber(robotInfo.getGridNumber()); - taskInfo.setGridSize(robotInfo.getGridSize()); + taskInfo.setGridHeight(robotInfo.getGridHeight()); + taskInfo.setGridWidth(robotInfo.getGridWidth()); + taskInfo.setResolution(robotInfo.getResolution()); save(taskInfo); return taskInfo; } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 a187d6e..0257c90 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 @@ -275,7 +275,7 @@ if (responseDTO != null && responseDTO.getMsg() != null) { cacheService.updateCostMap(robotId, responseDTO.getMsg()); robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); -// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); +// log.info("--------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); } } 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 8251010..39b3d2c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.robot.service.impl; import cn.afterturn.easypoi.entity.ImageEntity; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -256,16 +257,16 @@ 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.getResolution(), robotInfo); //No.1 任务初始化 if (initValue != 1) { //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { - PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); + PathInitDTO pathInitDTO = createInitDTO(robotInfo, pointDTO, taskId, robotId); //中子源计数率读取 - pathInitDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathInitDTO.setCount(cacheService.getNeutronCount(longId)); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -280,13 +281,13 @@ 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); + PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo, pointDTO, taskId, robotId); + //可通行标记为1 不可通行标记为0 String obstacle = getObstacle(robotId, pointDTO); - //TO-DO 障碍物判定信息 pathPlanDTO.setOpen(obstacle); //中子源计数率读取 - pathPlanDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)); log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); AlgorithmResponse response = algorithmService.pathPlanning(pathPlanDTO); //存储算法输出栅格信息 @@ -331,7 +332,7 @@ RobotInfo robotInfo = cacheService.getRobotInfo(longId); //slam经纬度转栅格 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getResolution(), robotInfo); } @@ -367,9 +368,9 @@ Integer accuracy = getGridFromList(obj[0], obj[1], obsList, appCostmapResponseDTO); if (accuracy != -1 && accuracy < obstacle) { //可通行 - res.add(0); - } else { res.add(1); + } else { + res.add(0); } } } @@ -409,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.getResolution(), robotInfo); TargetPointRequest request = new TargetPointRequest(); request.setX(Convert.toStr(gridCenterPoint.getX())); request.setY(Convert.toStr(gridCenterPoint.getY())); @@ -444,6 +445,7 @@ } updateWrapper.set(TaskInfo::getHeatImg, path); updateWrapper.eq(TaskInfo::getId, imgDTO.getTaskId()); + update(updateWrapper); } @SneakyThrows @@ -484,7 +486,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.getResolution(), robotInfo); record.setX(pointDTO.getX()); record.setY(pointDTO.getY()); record.setIndex(index); @@ -497,33 +499,66 @@ mcaImg.setHeight(600); mcaImg.setWidth(600); mcaImg.setUrl(uploadPath + info.getMcaImg()); - mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + if (StrUtil.isNotEmpty(info.getMcaImg())) { + mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + } params.put("mcaImg", mcaImg); ImageEntity routeImg = new ImageEntity(); routeImg.setHeight(600); routeImg.setWidth(600); routeImg.setUrl(uploadPath + info.getRouteImg()); - routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + if (StrUtil.isNotEmpty(info.getRouteImg())) { + routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + } params.put("routeImg", routeImg); ImageEntity heatImg = new ImageEntity(); heatImg.setHeight(600); heatImg.setWidth(600); heatImg.setUrl(uploadPath + info.getHeatImg()); - heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + if (StrUtil.isNotEmpty(info.getHeatImg())) { + heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + } params.put("heatImg", heatImg); ImageEntity psdImg = new ImageEntity(); psdImg.setHeight(500); psdImg.setWidth(500); psdImg.setUrl(uploadPath + info.getPsdImg()); - psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + if (StrUtil.isNotEmpty(info.getPsdImg())) { + psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + } params.put("psdImg", psdImg); WordUtil.exportOutputStream(docTemp, response.getOutputStream(), params); } + @Override + public void saveImgBase64(ImgDTO imgDTO) { + if (StrUtil.isNotEmpty(imgDTO.getPsdImg())) { + String psdImg = savePng(imgDTO.getTaskId(), "psdImg.png", imgDTO.getPsdImg()); + imgDTO.setPsdImg(psdImg); + } + if (StrUtil.isNotEmpty(imgDTO.getMcaImg())) { + String mcaImg = savePng(imgDTO.getTaskId(), "mcaImg.png", imgDTO.getMcaImg()); + imgDTO.setMcaImg(mcaImg); + } + if (StrUtil.isNotEmpty(imgDTO.getRouteImg())) { + String routeImg = savePng(imgDTO.getTaskId(), "routeImg.png", imgDTO.getRouteImg()); + imgDTO.setRouteImg(routeImg); + } + saveImg(imgDTO); + } + + private String savePng(String taskId, String imgName, String base64) { + String[] bas = base64.split(","); + String fileName = taskId + "/" + imgName; + File file = new File(uploadPath + fileName); + Base64.decodeToFile(bas[1], file); + return fileName; + } + private String saveHeatImg(String taskId) { String newFileName = "task\\" + taskId + ".png"; //读取当前路径图片 @@ -552,21 +587,25 @@ return true; } - private PathPlanDTO createPlanDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathPlanDTO createPlanDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { PathPlanDTO pathPlanDTO = new PathPlanDTO(); + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; pathPlanDTO.setX(pointDTO.getX().intValue() + ""); pathPlanDTO.setY(pointDTO.getY().intValue() + ""); - pathPlanDTO.setXMax(gridNumber); - pathPlanDTO.setYMax(pathPlanDTO.getXMax()); + pathPlanDTO.setXMax(xMax); + pathPlanDTO.setYMax(yMax); pathPlanDTO.setTaskId(taskId); pathPlanDTO.setRobotId(robotId); return pathPlanDTO; } - private PathInitDTO createInitDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathInitDTO createInitDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; PathInitDTO pathInitDTO = new PathInitDTO(); - pathInitDTO.setXMax(gridNumber); - pathInitDTO.setYMax(pathInitDTO.getXMax()); + pathInitDTO.setXMax(xMax); + pathInitDTO.setYMax(yMax); pathInitDTO.setX(pointDTO.getX().intValue() + ""); pathInitDTO.setY(pointDTO.getY().intValue() + ""); pathInitDTO.setTaskId(taskId); @@ -595,8 +634,9 @@ taskInfo.setStartTime(new Date()); taskInfo.setRouteId(routeInfo.getId()); taskInfo.setRobotId(robotInfo.getId()); - taskInfo.setGridNumber(robotInfo.getGridNumber()); - taskInfo.setGridSize(robotInfo.getGridSize()); + taskInfo.setGridHeight(robotInfo.getGridHeight()); + taskInfo.setGridWidth(robotInfo.getGridWidth()); + taskInfo.setResolution(robotInfo.getResolution()); save(taskInfo); return taskInfo; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java index bff5434..f94d3d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java @@ -47,10 +47,11 @@ invocation.add("5"); invocation.add("5"); -// invokeJob(invocation); - + invokeJob(invocation); + //{"count":"null","robotId":"1","taskId":"1748224487696142338","x":"8","xMax":"100","y":"2","yMax":"100"} String planning = path + "PathPlanning.exe"; - + //{"open":"0,0,0,0,0,0,0,0","robotId":"1","taskId":"1748250669749735425","x":"6","xMax":"100","y":"2","yMax":"100"} + //{"open":"1,1,1,1,1,1,1,1","robotId":"1","taskId":"1748252894098178049","x":"6","xMax":"100","y":"2","yMax":"100"} ArrayList planInvocation = new ArrayList(); planInvocation.add(planning); planInvocation.add("100"); @@ -62,7 +63,7 @@ //next_Y planInvocation.add("9"); ProcessBuilder processBuilder = new ProcessBuilder(); - invokeJob(planInvocation); +// invokeJob(planInvocation); } 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 2b9dd40..b8666f3 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 @@ -175,10 +175,10 @@ iPTZCommand = HCNetSDK.TILT_DOWN; break; case "left": - iPTZCommand = HCNetSDK.PAN_LEFT; + iPTZCommand = HCNetSDK.PAN_RIGHT; break; case "right": - iPTZCommand = HCNetSDK.PAN_RIGHT; + iPTZCommand = HCNetSDK.PAN_LEFT; break; default: break; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java index 203aa23..fa8c89d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java @@ -154,7 +154,7 @@ } } } - double psdVal = count * 1.000 / 5; + Double psdVal = count * 1.000 / 5; if (count > 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 a187d6e..0257c90 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 @@ -275,7 +275,7 @@ if (responseDTO != null && responseDTO.getMsg() != null) { cacheService.updateCostMap(robotId, responseDTO.getMsg()); robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); -// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); +// log.info("--------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); } } 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 8251010..39b3d2c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.robot.service.impl; import cn.afterturn.easypoi.entity.ImageEntity; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -256,16 +257,16 @@ 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.getResolution(), robotInfo); //No.1 任务初始化 if (initValue != 1) { //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { - PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); + PathInitDTO pathInitDTO = createInitDTO(robotInfo, pointDTO, taskId, robotId); //中子源计数率读取 - pathInitDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathInitDTO.setCount(cacheService.getNeutronCount(longId)); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -280,13 +281,13 @@ 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); + PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo, pointDTO, taskId, robotId); + //可通行标记为1 不可通行标记为0 String obstacle = getObstacle(robotId, pointDTO); - //TO-DO 障碍物判定信息 pathPlanDTO.setOpen(obstacle); //中子源计数率读取 - pathPlanDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)); log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); AlgorithmResponse response = algorithmService.pathPlanning(pathPlanDTO); //存储算法输出栅格信息 @@ -331,7 +332,7 @@ RobotInfo robotInfo = cacheService.getRobotInfo(longId); //slam经纬度转栅格 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getResolution(), robotInfo); } @@ -367,9 +368,9 @@ Integer accuracy = getGridFromList(obj[0], obj[1], obsList, appCostmapResponseDTO); if (accuracy != -1 && accuracy < obstacle) { //可通行 - res.add(0); - } else { res.add(1); + } else { + res.add(0); } } } @@ -409,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.getResolution(), robotInfo); TargetPointRequest request = new TargetPointRequest(); request.setX(Convert.toStr(gridCenterPoint.getX())); request.setY(Convert.toStr(gridCenterPoint.getY())); @@ -444,6 +445,7 @@ } updateWrapper.set(TaskInfo::getHeatImg, path); updateWrapper.eq(TaskInfo::getId, imgDTO.getTaskId()); + update(updateWrapper); } @SneakyThrows @@ -484,7 +486,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.getResolution(), robotInfo); record.setX(pointDTO.getX()); record.setY(pointDTO.getY()); record.setIndex(index); @@ -497,33 +499,66 @@ mcaImg.setHeight(600); mcaImg.setWidth(600); mcaImg.setUrl(uploadPath + info.getMcaImg()); - mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + if (StrUtil.isNotEmpty(info.getMcaImg())) { + mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + } params.put("mcaImg", mcaImg); ImageEntity routeImg = new ImageEntity(); routeImg.setHeight(600); routeImg.setWidth(600); routeImg.setUrl(uploadPath + info.getRouteImg()); - routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + if (StrUtil.isNotEmpty(info.getRouteImg())) { + routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + } params.put("routeImg", routeImg); ImageEntity heatImg = new ImageEntity(); heatImg.setHeight(600); heatImg.setWidth(600); heatImg.setUrl(uploadPath + info.getHeatImg()); - heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + if (StrUtil.isNotEmpty(info.getHeatImg())) { + heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + } params.put("heatImg", heatImg); ImageEntity psdImg = new ImageEntity(); psdImg.setHeight(500); psdImg.setWidth(500); psdImg.setUrl(uploadPath + info.getPsdImg()); - psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + if (StrUtil.isNotEmpty(info.getPsdImg())) { + psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + } params.put("psdImg", psdImg); WordUtil.exportOutputStream(docTemp, response.getOutputStream(), params); } + @Override + public void saveImgBase64(ImgDTO imgDTO) { + if (StrUtil.isNotEmpty(imgDTO.getPsdImg())) { + String psdImg = savePng(imgDTO.getTaskId(), "psdImg.png", imgDTO.getPsdImg()); + imgDTO.setPsdImg(psdImg); + } + if (StrUtil.isNotEmpty(imgDTO.getMcaImg())) { + String mcaImg = savePng(imgDTO.getTaskId(), "mcaImg.png", imgDTO.getMcaImg()); + imgDTO.setMcaImg(mcaImg); + } + if (StrUtil.isNotEmpty(imgDTO.getRouteImg())) { + String routeImg = savePng(imgDTO.getTaskId(), "routeImg.png", imgDTO.getRouteImg()); + imgDTO.setRouteImg(routeImg); + } + saveImg(imgDTO); + } + + private String savePng(String taskId, String imgName, String base64) { + String[] bas = base64.split(","); + String fileName = taskId + "/" + imgName; + File file = new File(uploadPath + fileName); + Base64.decodeToFile(bas[1], file); + return fileName; + } + private String saveHeatImg(String taskId) { String newFileName = "task\\" + taskId + ".png"; //读取当前路径图片 @@ -552,21 +587,25 @@ return true; } - private PathPlanDTO createPlanDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathPlanDTO createPlanDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { PathPlanDTO pathPlanDTO = new PathPlanDTO(); + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; pathPlanDTO.setX(pointDTO.getX().intValue() + ""); pathPlanDTO.setY(pointDTO.getY().intValue() + ""); - pathPlanDTO.setXMax(gridNumber); - pathPlanDTO.setYMax(pathPlanDTO.getXMax()); + pathPlanDTO.setXMax(xMax); + pathPlanDTO.setYMax(yMax); pathPlanDTO.setTaskId(taskId); pathPlanDTO.setRobotId(robotId); return pathPlanDTO; } - private PathInitDTO createInitDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathInitDTO createInitDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; PathInitDTO pathInitDTO = new PathInitDTO(); - pathInitDTO.setXMax(gridNumber); - pathInitDTO.setYMax(pathInitDTO.getXMax()); + pathInitDTO.setXMax(xMax); + pathInitDTO.setYMax(yMax); pathInitDTO.setX(pointDTO.getX().intValue() + ""); pathInitDTO.setY(pointDTO.getY().intValue() + ""); pathInitDTO.setTaskId(taskId); @@ -595,8 +634,9 @@ taskInfo.setStartTime(new Date()); taskInfo.setRouteId(routeInfo.getId()); taskInfo.setRobotId(robotInfo.getId()); - taskInfo.setGridNumber(robotInfo.getGridNumber()); - taskInfo.setGridSize(robotInfo.getGridSize()); + taskInfo.setGridHeight(robotInfo.getGridHeight()); + taskInfo.setGridWidth(robotInfo.getGridWidth()); + taskInfo.setResolution(robotInfo.getResolution()); save(taskInfo); return taskInfo; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java index bff5434..f94d3d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java @@ -47,10 +47,11 @@ invocation.add("5"); invocation.add("5"); -// invokeJob(invocation); - + invokeJob(invocation); + //{"count":"null","robotId":"1","taskId":"1748224487696142338","x":"8","xMax":"100","y":"2","yMax":"100"} String planning = path + "PathPlanning.exe"; - + //{"open":"0,0,0,0,0,0,0,0","robotId":"1","taskId":"1748250669749735425","x":"6","xMax":"100","y":"2","yMax":"100"} + //{"open":"1,1,1,1,1,1,1,1","robotId":"1","taskId":"1748252894098178049","x":"6","xMax":"100","y":"2","yMax":"100"} ArrayList planInvocation = new ArrayList(); planInvocation.add(planning); planInvocation.add("100"); @@ -62,7 +63,7 @@ //next_Y planInvocation.add("9"); ProcessBuilder processBuilder = new ProcessBuilder(); - invokeJob(planInvocation); +// invokeJob(planInvocation); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java index 0738b6d..75fec0e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java @@ -62,7 +62,7 @@ query.eq("(a.monitor_val 0) { if (psdVal >= 13) { AlarmRecord alarmRecord = new AlarmRecord(robotId, diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 560529c..838c6f9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -1,5 +1,7 @@ package com.casic.missiles.modular.robot.controller; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; @@ -22,9 +24,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.math.BigDecimal; import java.util.List; @@ -79,6 +83,7 @@ return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); } + /** * 线路信息管理(其他信息待定)列表 */ @@ -86,16 +91,23 @@ @GetMapping(value = "/testGrid") public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { RobotInfo robotInfo = infoService.getById(pathInitDTO.getRobotId()); - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(pathInitDTO.getY()), 10, new BigDecimal(4), robotInfo); - return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, 10, new BigDecimal(4), robotInfo)); + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()), new BigDecimal(10), new BigDecimal(4), robotInfo); + return ResponseDataDTO.success(algorithmService.convertGridCenterPoint(gridPointDTO, new BigDecimal(10), robotInfo)); } @ApiOperation("图片路径保存") @GetMapping(value = "/saveImg") public ResponseDataDTO> saveImg(ImgDTO imgDTO) { - Page page = PageFactory.defaultPage(); + taskInfoService.saveImg(imgDTO); - return ResponseDataDTO.success(super.packForBT(page)); + return ResponseDataDTO.success(); + } + + @ApiOperation("图片路径保存") + @PostMapping(value = "/saveImgBase64") + public ResponseDataDTO> saveImgBase64(@RequestBody ImgDTO imgDTO) { + taskInfoService.saveImgBase64(imgDTO); + return ResponseDataDTO.success(); } /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java index 3d50b86..c6c0035 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/AlarmRecordMapper.java @@ -19,5 +19,5 @@ /** * 告警记录 分页检索 */ - List selectAlarmRecordPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectAlarmRecordPage(@Param("page") Page page,@Param("ew" )QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 96a2312..2e7c309 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -56,6 +56,5 @@ ${ew.sqlSegment} --- order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java index 0b6266a..acbeb93 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/RobotInfoSetDTO.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.dto; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,19 +10,17 @@ @ApiModelProperty(value = "机器人ID", dataType = "Long") private Long id; - @ApiModelProperty(value = "设置线速度", dataType = "BigDecimal") private BigDecimal confV; - @ApiModelProperty(value = "设置角速度", dataType = "BigDecimal") private BigDecimal confW; + @ApiModelProperty(value = "阈值设定", dataType = "BigDecimal") private BigDecimal alarmThreshold; - - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + private BigDecimal resolution; } 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 4e8a88f..90e4dcf 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 @@ -126,13 +126,6 @@ @TableField("voltage_min") private Integer voltageMin; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; - @ApiModelProperty(value = "机器人路线下载地址", dataType = "String") @TableField("trajectory_path") private String trajectoryPath; @@ -152,6 +145,16 @@ @TableField("origin_z") private BigDecimal originZ; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index 49c57dc..edc104e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -142,12 +142,15 @@ @TableField("heat_img") private String heatImg; - @ApiModelProperty(value = "栅格顶点值", dataType = "Integer") - @TableField("grid_size") - private BigDecimal gridSize; - @ApiModelProperty(value = "栅格数量", dataType = "Integer") - @TableField("grid_number") - private Integer gridNumber; + @ApiModelProperty(value = "栅格高度", dataType = "BigDecimal") + @TableField("grid_height") + private BigDecimal gridHeight; + @ApiModelProperty(value = "栅格宽度", dataType = "BigDecimal") + @TableField("grid_width") + private BigDecimal gridWidth; + @ApiModelProperty(value = "栅格分辨率", dataType = "BigDecimal") + @TableField("resolution") + private BigDecimal resolution; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java index db3215a..9065f34 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlgorithmService.java @@ -26,18 +26,15 @@ /** slam经纬度转换为 栅格坐标 * @param x slam x * @param y slam y - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点经纬度 + * @param resolution 栅格分辨率 * @return */ - GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, BigDecimal resolution, RobotInfo robotInfo); /** * 根据栅格获取栅格中心点位 * @param pointDTO 栅格坐标 - * @param gridNum 栅格总数 - * @param gridSize 栅格顶点值 * @return */ - GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo); + GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, BigDecimal resolution, RobotInfo robotInfo); } \ No newline at end of file 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 0144d86..31d7ba6 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 @@ -60,4 +60,6 @@ void saveImg(ImgDTO imgDTO); void exportDoc(HttpServletResponse response, String taskId); + + void saveImgBase64(ImgDTO imgDTO); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index 112af1e..8658df1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.casic.missiles.modular.robot.dto.*; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.TaskHeatMap; @@ -41,6 +42,10 @@ @Transactional @Override public AlgorithmResponse pathPlanningInit(PathInitDTO initDTO) { + if(StrUtil.isEmpty(initDTO.getCount())){ + initDTO.setCount("0.00"); + } + log.info(JSON.toJSONString(initDTO)); //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(initPath); @@ -58,10 +63,14 @@ @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { + if(StrUtil.isEmpty(planDTO.getCount())){ + planDTO.setCount("0.01"); + } //算法路径及入参配置 List commends = new ArrayList<>(); commends.add(planPath); commends.addAll(planDTO.toArray()); + log.info("寻源算法调用:{}",JSON.toJSONString(planDTO)); List res = AlgorithmUtils.invokeJob(commends); AlgorithmResponse response = getAlgorithmResponse(planDTO, res); //next 点位编写 @@ -136,16 +145,16 @@ * @param y slam y */ @Override - public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertSlamToGrid(BigDecimal x, BigDecimal y,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO pointDTO = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //减去栅格原点坐标 x = x.subtract(robotInfo.getOriginX()); y = y.subtract(robotInfo.getOriginY()); - pointDTO.setX(x.multiply(scale)); - pointDTO.setY(y.multiply(scale)); + pointDTO.setX(new BigDecimal(x.multiply(scale).intValue())); + pointDTO.setY(new BigDecimal(y.multiply(scale).intValue())); return pointDTO; } @@ -153,14 +162,12 @@ * 根据栅格读取栅格中心点位信息 * * @param pointDTO 栅格信息 - * @param gridNum 栅格数 - * @param gridSize 栅格顶点值 * @return */ - public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO, Integer gridNum, BigDecimal gridSize, RobotInfo robotInfo) { + public GridPointDTO convertGridCenterPoint(GridPointDTO pointDTO,BigDecimal resolution, RobotInfo robotInfo) { GridPointDTO centerPoint = new GridPointDTO(); - BigDecimal scale = gridSize.divide(new BigDecimal(gridNum), 5, BigDecimal.ROUND_HALF_UP); + BigDecimal scale = resolution; //点位转换 BigDecimal slamX = pointDTO.getX().divide(scale, 5, BigDecimal.ROUND_HALF_UP); BigDecimal slamY = pointDTO.getY().divide(scale, 5, BigDecimal.ROUND_HALF_UP); 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 f1c82c0..e2879ce 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.convert.Convert; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -55,7 +56,11 @@ @Override public String getNeutronCount(Long robotId) { - return CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + Double psdVal = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_PSD_DATA_ID + robotId); + if(psdVal==null){ + return null; + } + return Convert.toStr(psdVal); } @Override 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 777f3ec..f148b16 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 @@ -13,10 +13,7 @@ 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.model.*; 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; @@ -99,19 +96,20 @@ if (robotInfo.getAlarmThreshold() != null) { update.set(RobotInfo::getAlarmThreshold, robotInfo.getAlarmThreshold()); } - if (robotInfo.getGridSize() != null && robotInfo.getGridNumber() != null) { - update.set(RobotInfo::getGridSize, robotInfo.getGridSize()); - update.set(RobotInfo::getGridNumber, robotInfo.getGridNumber()); + if (robotInfo.getGridHeight() != null && robotInfo.getGridWidth() != null) { + update.set(RobotInfo::getGridHeight, robotInfo.getGridHeight()); + update.set(RobotInfo::getGridWidth, robotInfo.getGridWidth()); + update.set(RobotInfo::getResolution,robotInfo.getResolution()); //下发障碍物栅格 - sendCostMapResolution(robotInfo.getGridSize(), robotInfo.getGridNumber(), robotInfo.getId()); + sendCostMapResolution(robotInfo.getResolution(), robotInfo.getId()); } update.eq(RobotInfo::getId, robotInfo.getId()); update(update); } - private void sendCostMapResolution(BigDecimal gridSize, Integer gridNumber, Long robotId) { + private void sendCostMapResolution(BigDecimal Resolution, Long robotId) { CostMapResolutionRequest request = new CostMapResolutionRequest(); - request.setResolution(gridSize.divide(new BigDecimal(gridNumber), 5, BigDecimal.ROUND_HALF_UP).doubleValue()); + request.setResolution(Resolution.doubleValue()); request.setRobotId(robotId); //发送栅格分辨率设定 baseRobotService.execCmdHandler(request, InstructCodeEnums.COSTMAP_RESOLUTION); @@ -130,7 +128,9 @@ @Override public void loadTrack(RouteInfo routeInfo) { try { - + LambdaQueryWrapper pointQuery = new LambdaQueryWrapper<>(); + pointQuery.eq(RobotPointInfo::getRouteId,routeInfo.getId()); + pointInfoService.remove(pointQuery); RobotInfo info = getById(routeInfo.getRobotId()); String routeName = URLEncoder.encode(routeInfo.getRouteName(), "UTF-8"); String urlPath = info.getTrajectoryPath() + routeName + "/" + routeName + ".txt"; @@ -146,7 +146,6 @@ @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); 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 a187d6e..0257c90 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 @@ -275,7 +275,7 @@ if (responseDTO != null && responseDTO.getMsg() != null) { cacheService.updateCostMap(robotId, responseDTO.getMsg()); robotInfoService.updateRobotGrid(robotId,responseDTO.getMsg()); -// log.info("---------------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); +// log.info("--------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); } } 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 8251010..39b3d2c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.robot.service.impl; import cn.afterturn.easypoi.entity.ImageEntity; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -256,16 +257,16 @@ 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.getResolution(), robotInfo); //No.1 任务初始化 if (initValue != 1) { //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { - PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); + PathInitDTO pathInitDTO = createInitDTO(robotInfo, pointDTO, taskId, robotId); //中子源计数率读取 - pathInitDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathInitDTO.setCount(cacheService.getNeutronCount(longId)); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -280,13 +281,13 @@ 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); + PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo, pointDTO, taskId, robotId); + //可通行标记为1 不可通行标记为0 String obstacle = getObstacle(robotId, pointDTO); - //TO-DO 障碍物判定信息 pathPlanDTO.setOpen(obstacle); //中子源计数率读取 - pathPlanDTO.setCount(cacheService.getNeutronCount(longId) + ""); + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)); log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); AlgorithmResponse response = algorithmService.pathPlanning(pathPlanDTO); //存储算法输出栅格信息 @@ -331,7 +332,7 @@ RobotInfo robotInfo = cacheService.getRobotInfo(longId); //slam经纬度转栅格 - GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize(), robotInfo); + GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getResolution(), robotInfo); } @@ -367,9 +368,9 @@ Integer accuracy = getGridFromList(obj[0], obj[1], obsList, appCostmapResponseDTO); if (accuracy != -1 && accuracy < obstacle) { //可通行 - res.add(0); - } else { res.add(1); + } else { + res.add(0); } } } @@ -409,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.getResolution(), robotInfo); TargetPointRequest request = new TargetPointRequest(); request.setX(Convert.toStr(gridCenterPoint.getX())); request.setY(Convert.toStr(gridCenterPoint.getY())); @@ -444,6 +445,7 @@ } updateWrapper.set(TaskInfo::getHeatImg, path); updateWrapper.eq(TaskInfo::getId, imgDTO.getTaskId()); + update(updateWrapper); } @SneakyThrows @@ -484,7 +486,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.getResolution(), robotInfo); record.setX(pointDTO.getX()); record.setY(pointDTO.getY()); record.setIndex(index); @@ -497,33 +499,66 @@ mcaImg.setHeight(600); mcaImg.setWidth(600); mcaImg.setUrl(uploadPath + info.getMcaImg()); - mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + if (StrUtil.isNotEmpty(info.getMcaImg())) { + mcaImg.setData(WordUtil.getImageBase64(uploadPath + info.getMcaImg())); + } params.put("mcaImg", mcaImg); ImageEntity routeImg = new ImageEntity(); routeImg.setHeight(600); routeImg.setWidth(600); routeImg.setUrl(uploadPath + info.getRouteImg()); - routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + if (StrUtil.isNotEmpty(info.getRouteImg())) { + routeImg.setData(WordUtil.getImageBase64(uploadPath + info.getRouteImg())); + } params.put("routeImg", routeImg); ImageEntity heatImg = new ImageEntity(); heatImg.setHeight(600); heatImg.setWidth(600); heatImg.setUrl(uploadPath + info.getHeatImg()); - heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + if (StrUtil.isNotEmpty(info.getHeatImg())) { + heatImg.setData(WordUtil.getImageBase64(uploadPath + info.getHeatImg())); + } params.put("heatImg", heatImg); ImageEntity psdImg = new ImageEntity(); psdImg.setHeight(500); psdImg.setWidth(500); psdImg.setUrl(uploadPath + info.getPsdImg()); - psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + if (StrUtil.isNotEmpty(info.getPsdImg())) { + psdImg.setData(WordUtil.getImageBase64(uploadPath + info.getPsdImg())); + } params.put("psdImg", psdImg); WordUtil.exportOutputStream(docTemp, response.getOutputStream(), params); } + @Override + public void saveImgBase64(ImgDTO imgDTO) { + if (StrUtil.isNotEmpty(imgDTO.getPsdImg())) { + String psdImg = savePng(imgDTO.getTaskId(), "psdImg.png", imgDTO.getPsdImg()); + imgDTO.setPsdImg(psdImg); + } + if (StrUtil.isNotEmpty(imgDTO.getMcaImg())) { + String mcaImg = savePng(imgDTO.getTaskId(), "mcaImg.png", imgDTO.getMcaImg()); + imgDTO.setMcaImg(mcaImg); + } + if (StrUtil.isNotEmpty(imgDTO.getRouteImg())) { + String routeImg = savePng(imgDTO.getTaskId(), "routeImg.png", imgDTO.getRouteImg()); + imgDTO.setRouteImg(routeImg); + } + saveImg(imgDTO); + } + + private String savePng(String taskId, String imgName, String base64) { + String[] bas = base64.split(","); + String fileName = taskId + "/" + imgName; + File file = new File(uploadPath + fileName); + Base64.decodeToFile(bas[1], file); + return fileName; + } + private String saveHeatImg(String taskId) { String newFileName = "task\\" + taskId + ".png"; //读取当前路径图片 @@ -552,21 +587,25 @@ return true; } - private PathPlanDTO createPlanDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathPlanDTO createPlanDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { PathPlanDTO pathPlanDTO = new PathPlanDTO(); + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; pathPlanDTO.setX(pointDTO.getX().intValue() + ""); pathPlanDTO.setY(pointDTO.getY().intValue() + ""); - pathPlanDTO.setXMax(gridNumber); - pathPlanDTO.setYMax(pathPlanDTO.getXMax()); + pathPlanDTO.setXMax(xMax); + pathPlanDTO.setYMax(yMax); pathPlanDTO.setTaskId(taskId); pathPlanDTO.setRobotId(robotId); return pathPlanDTO; } - private PathInitDTO createInitDTO(String gridNumber, GridPointDTO pointDTO, Long taskId, String robotId) { + private PathInitDTO createInitDTO(RobotInfo robotInfo, GridPointDTO pointDTO, Long taskId, String robotId) { + String xMax = robotInfo.getGridHeight().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; + String yMax = robotInfo.getGridWidth().divide(robotInfo.getResolution(), 5, BigDecimal.ROUND_HALF_UP).intValue() + ""; PathInitDTO pathInitDTO = new PathInitDTO(); - pathInitDTO.setXMax(gridNumber); - pathInitDTO.setYMax(pathInitDTO.getXMax()); + pathInitDTO.setXMax(xMax); + pathInitDTO.setYMax(yMax); pathInitDTO.setX(pointDTO.getX().intValue() + ""); pathInitDTO.setY(pointDTO.getY().intValue() + ""); pathInitDTO.setTaskId(taskId); @@ -595,8 +634,9 @@ taskInfo.setStartTime(new Date()); taskInfo.setRouteId(routeInfo.getId()); taskInfo.setRobotId(robotInfo.getId()); - taskInfo.setGridNumber(robotInfo.getGridNumber()); - taskInfo.setGridSize(robotInfo.getGridSize()); + taskInfo.setGridHeight(robotInfo.getGridHeight()); + taskInfo.setGridWidth(robotInfo.getGridWidth()); + taskInfo.setResolution(robotInfo.getResolution()); save(taskInfo); return taskInfo; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java index bff5434..f94d3d5 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java @@ -47,10 +47,11 @@ invocation.add("5"); invocation.add("5"); -// invokeJob(invocation); - + invokeJob(invocation); + //{"count":"null","robotId":"1","taskId":"1748224487696142338","x":"8","xMax":"100","y":"2","yMax":"100"} String planning = path + "PathPlanning.exe"; - + //{"open":"0,0,0,0,0,0,0,0","robotId":"1","taskId":"1748250669749735425","x":"6","xMax":"100","y":"2","yMax":"100"} + //{"open":"1,1,1,1,1,1,1,1","robotId":"1","taskId":"1748252894098178049","x":"6","xMax":"100","y":"2","yMax":"100"} ArrayList planInvocation = new ArrayList(); planInvocation.add(planning); planInvocation.add("100"); @@ -62,7 +63,7 @@ //next_Y planInvocation.add("9"); ProcessBuilder processBuilder = new ProcessBuilder(); - invokeJob(planInvocation); +// invokeJob(planInvocation); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java index 0738b6d..75fec0e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java @@ -62,7 +62,7 @@ query.eq("(a.monitor_val> responseDTO = JSON.parseObject(json, new TypeReference>>() { + String xjson="{\"msg\": {\"error_code\": 0, \"error_msg\": \"\", \"result\": 1}}"; + RobotMsgResponseDTO responseDTO = JSON.parseObject(xjson, new TypeReference>() { }); + System.out.println(responseDTO); } }