From ed17f85c802156e5b4b6a6c02ed27248b115351c Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Sat, 15 Feb 2025 09:13:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=BB=99PP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/mqtt/api/path/PathPlanningApi.java | 22 ++ .../mqtt/api/path/dto/PositionMapLineDTO.java | 67 ++++ .../mqtt/api/path/dto/RelatedPathNode.java | 25 ++ .../module/mqtt/api/task/RobotTaskApi.java | 2 +- .../mqtt/api/path/PathPlanningApiImpl.java | 30 ++ .../mqtt/api/task/RobotTaskApiImpl.java | 6 +- .../system/enums/ErrorCodeConstants.java | 3 + .../path/PathPlanningTopicConstant.java | 14 + .../constant/robot/RobotTopicConstant.java | 11 + .../admin/path/PathPlanningController.java | 12 +- .../positionmap/dto/PositionMapLineDTO.java | 64 ++++ .../vo/PositionMapLinePageReqVO.java | 27 ++ .../positionmap/vo/PositionMapLineRespVO.java | 36 ++ .../vo/PositionMapLineSaveReqVO.java | 28 ++ .../vo/RobotInformationStatisticsVO.java | 3 + .../positionmap/PositionMapLineDO.java | 38 ++ .../positionmap/PositionMapLineMapper.java | 8 + .../system/enums/line/DirectionEnum.java | 21 + .../system/enums/robot/RobotTopicEnum.java | 14 - .../framework/mqtt/MqttConfiguration.java | 3 +- .../service/path/PathPlanningService.java | 4 +- .../service/path/PathPlanningServiceImpl.java | 135 ++++++- .../robot/RobotInformationServiceImpl.java | 46 +-- .../robot/job/DistributeTasksServiceImpl.java | 7 +- .../positionmap/PositionMapLineMapper.xml | 359 +++++++++++++++++- 25 files changed, 923 insertions(+), 62 deletions(-) create mode 100644 yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/PathPlanningApi.java create mode 100644 yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionMapLineDTO.java create mode 100644 yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/RelatedPathNode.java create mode 100644 yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/path/PathPlanningApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/robot/RobotTopicConstant.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapLineDTO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/line/DirectionEnum.java delete mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/RobotTopicEnum.java diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/PathPlanningApi.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/PathPlanningApi.java new file mode 100644 index 000000000..52a9eac23 --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/PathPlanningApi.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.mqtt.api.path; + +import cn.iocoder.yudao.module.mqtt.api.path.dto.RelatedPathNode; +import cn.iocoder.yudao.module.mqtt.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.validation.Valid; + +@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = +@Tag(name = "MQTT 服务 - 参数配置") +public interface PathPlanningApi { + String PREFIX = ApiConstants.PREFIX + "/config"; + + @PostMapping(PREFIX + "/synchronousPoint") + @Operation(summary = "下发任务给车机") + void synchronousPointToPP( @RequestBody RelatedPathNode relatedPathNode, @RequestParam("topic") String topic); +} diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionMapLineDTO.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionMapLineDTO.java new file mode 100644 index 000000000..299509e57 --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionMapLineDTO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.mqtt.api.path.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PositionMapLineDTO { + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28062") + private Long id; + + @Schema(description = "地图id", example = "20863") + private Long positionMapId; + + @Schema(description = "出发点id(点位子表id)", example = "20863") + private Long startingPointId; + + @Schema(description = "结束点id(点位子表id)", example = "15890") + private Long endPointId; + + @Schema(description = "行走方法 0.直线 1.上左曲线2.上右曲线3.下左曲线 4.下右曲线") + private Integer method; + + @Schema(description = "方向 1.单向 2.双向", example = "15890") + private Integer direction; + + @Schema(description = "正向限速(m/s)", example = "15890") + private BigDecimal forwardSpeedLimit; + + @Schema(description = "反向限速(m/s)", example = "15890") + private BigDecimal reverseSpeedLimit; + + @Schema(description = "开始控制点x轴") + private String beginControlX; + + @Schema(description = "开始控制点y轴") + private String beginControlY; + + @Schema(description = "结束控制点x轴") + private String endControlX; + + @Schema(description = "结束控制点y轴") + private String endControlY; + + @Schema(description = "膨胀区域前") + private BigDecimal expansionZoneFront; + + @Schema(description = "膨胀区域后") + private BigDecimal expansionZoneAfter; + + @Schema(description = "膨胀区域左") + private BigDecimal expansionZoneLeft; + + @Schema(description = "膨胀区域右") + private BigDecimal expansionZoneRight; + + @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") + private Integer toward; +} diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/RelatedPathNode.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/RelatedPathNode.java new file mode 100644 index 000000000..b13aa885a --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/RelatedPathNode.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.mqtt.api.path.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class RelatedPathNode { + + @Schema(description = "楼层", example = "20863") + private Integer floor; + + @Schema(description = "区域", example = "20863") + private String area; + + @Schema(description = "点位状态(0:新增、1:删除、2:更新)", example = "20863") + private Integer pointStatus = 0; + + private List control_nodes; +} diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/task/RobotTaskApi.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/task/RobotTaskApi.java index cc275abee..f926fbb56 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/task/RobotTaskApi.java +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/task/RobotTaskApi.java @@ -20,5 +20,5 @@ public interface RobotTaskApi { @PostMapping(PREFIX + "/distribute/tasks") @Operation(summary = "下发任务给车机") - CommonResult sendTaskToRobot(@Valid @RequestBody List robotTaskDOS ); + void sendTaskToRobot(@Valid @RequestBody List robotTaskDOS ); } diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/path/PathPlanningApiImpl.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/path/PathPlanningApiImpl.java new file mode 100644 index 000000000..d8a3c2b18 --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/path/PathPlanningApiImpl.java @@ -0,0 +1,30 @@ +package cn.iododer.yudao.module.mqtt.api.path; + +import cn.iocoder.yudao.module.mqtt.api.path.PathPlanningApi; +import cn.iocoder.yudao.module.mqtt.api.path.dto.RelatedPathNode; +import cn.iododer.yudao.module.mqtt.util.MqttUtils; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +@RestController // 提供 RESTful API 接口,给 Feign 调用 +@Validated +@Slf4j +public class PathPlanningApiImpl implements PathPlanningApi { + + @Autowired + private MqttUtils mqttUtils; + + @Override + public void synchronousPointToPP(RelatedPathNode relatedPathNode, String topic) { + try { + mqttUtils.pub(topic, JSON.toJSONString(relatedPathNode)); + log.info("同步给路径规划完成 :{}", topic); + } catch (MqttException e) { + log.info("同步点位信息给路径规划异常 :{}",e); + } + } +} diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/task/RobotTaskApiImpl.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/task/RobotTaskApiImpl.java index 089193002..2dc1862c4 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/task/RobotTaskApiImpl.java +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/api/task/RobotTaskApiImpl.java @@ -24,18 +24,14 @@ public class RobotTaskApiImpl implements RobotTaskApi { private MqttUtils mqttUtils; @Override - public CommonResult sendTaskToRobot(List robotTaskDOS) { - String str ="SUCCESS"; + public void sendTaskToRobot(List robotTaskDOS) { for (RobotAcceptTaskDTO robotTaskDO : robotTaskDOS) { log.info("发送MQTT消息 :{}",JSON.toJSONString(robotTaskDO)); try { mqttUtils.pub( robotTaskDO.getTopic(), JSON.toJSONString(robotTaskDO)); } catch (Exception e) { log.info("消息发送异常 :{}",e.getMessage()); - str ="FAIL"; } } - - return success(str); } } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 36bd43821..ddb060705 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -229,4 +229,7 @@ public interface ErrorCodeConstants { // ========== 车辆充电记录 1_002_043_001 ========== ErrorCode CHARGE_LOG_NOT_EXISTS = new ErrorCode(1_002_043_001, "车辆充电记录不存在"); + // ========== 路径规划 1_002_044_001 ========== + ErrorCode PATH_PLANNING_NOT_EXISTS = new ErrorCode(1_002_044_001, "不存在需要同步给路径规划的数据"); + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java new file mode 100644 index 000000000..ac47706e3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.system.constant.path; + +/** + * 下发给PP的TOPIC + */ +public class PathPlanningTopicConstant { + /** + * 同步地图点位 + */ + public static String SYNCHRONOUS_MAP_POINT = "SYNCHRONOUS_MAP_POINT"; + + + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/robot/RobotTopicConstant.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/robot/RobotTopicConstant.java new file mode 100644 index 000000000..591c2cf0c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/robot/RobotTopicConstant.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.system.constant.robot; + +/** + * 下发给车机的TOPIC + */ +public class RobotTopicConstant { + /** + * 下发任务给车机的topic (拼接mac地址) + */ + public static String ROBOT_TASK_TOPIC = "ROBOT_TASK_"; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java index 30ed60f0e..1bd9f5b93 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java @@ -1,16 +1,14 @@ package cn.iocoder.yudao.module.system.controller.admin.path; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotInformationSaveReqVO; import cn.iocoder.yudao.module.system.service.path.PathPlanningService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; @@ -26,11 +24,11 @@ public class PathPlanningController { @Resource private PathPlanningService pathPlanningService; - @PutMapping("/synchronousPoint") + @PostMapping("/synchronousPoint") @Operation(summary = "同步全部的点位信息") @PreAuthorize("@ss.hasPermission('robot:information:synchronousPoint')") - public CommonResult synchronousPoint() { - pathPlanningService.synchronousPoint(); + public CommonResult synchronousPoint(@RequestBody PositionMapSaveReqVO positionMapSaveReqVO) { + pathPlanningService.synchronousPoint(positionMapSaveReqVO); return success("同步完成"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapLineDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapLineDTO.java new file mode 100644 index 000000000..c6d52812b --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapLineDTO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +public class PositionMapLineDTO { + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28062") + private Long id; + + @Schema(description = "地图id", example = "20863") + private Long positionMapId; + + @Schema(description = "出发点id(点位子表id)", example = "20863") + private Long startingPointId; + + @Schema(description = "结束点id(点位子表id)", example = "15890") + private Long endPointId; + + @Schema(description = "行走方法 0.直线 1.上左曲线2.上右曲线3.下左曲线 4.下右曲线") + private Integer method; + + @Schema(description = "方向 1.单向 2.双向", example = "15890") + private Integer direction; + + @Schema(description = "正向限速(m/s)", example = "15890") + private BigDecimal forwardSpeedLimit; + + @Schema(description = "反向限速(m/s)", example = "15890") + private BigDecimal reverseSpeedLimit; + + @Schema(description = "开始控制点x轴") + private String beginControlX; + + @Schema(description = "开始控制点y轴") + private String beginControlY; + + @Schema(description = "结束控制点x轴") + private String endControlX; + + @Schema(description = "结束控制点y轴") + private String endControlY; + + @Schema(description = "膨胀区域前") + private BigDecimal expansionZoneFront; + + @Schema(description = "膨胀区域后") + private BigDecimal expansionZoneAfter; + + @Schema(description = "膨胀区域左") + private BigDecimal expansionZoneLeft; + + @Schema(description = "膨胀区域右") + private BigDecimal expansionZoneRight; + + @Schema(description = "车头朝向( 0:正向 1:反向)") + private Integer toward; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java index 37b3bfed1..dd2b1792e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java @@ -43,4 +43,31 @@ public class PositionMapLinePageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + @Schema(description = "开始控制点x轴") + private String beginControlX; + + @Schema(description = "开始控制点y轴") + private String beginControlY; + + @Schema(description = "结束控制点x轴") + private String endControlX; + + @Schema(description = "结束控制点y轴") + private String endControlY; + + @Schema(description = "膨胀区域前") + private BigDecimal expansionZoneFront; + + @Schema(description = "膨胀区域后") + private BigDecimal expansionZoneAfter; + + @Schema(description = "膨胀区域左") + private BigDecimal expansionZoneLeft; + + @Schema(description = "膨胀区域右") + private BigDecimal expansionZoneRight; + + @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") + private Integer toward; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java index d07ea1bde..5b5315e6b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java @@ -49,4 +49,40 @@ public class PositionMapLineRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "开始控制点x轴") + @ExcelProperty("开始控制点x轴") + private String beginControlX; + + @Schema(description = "开始控制点y轴") + @ExcelProperty("开始控制点y轴") + private String beginControlY; + + @Schema(description = "结束控制点x轴") + @ExcelProperty("结束控制点x轴") + private String endControlX; + + @Schema(description = "结束控制点y轴") + @ExcelProperty("结束控制点y轴") + private String endControlY; + + @Schema(description = "膨胀区域前") + @ExcelProperty("膨胀区域前") + private BigDecimal expansionZoneFront; + + @Schema(description = "膨胀区域后") + @ExcelProperty("膨胀区域后") + private BigDecimal expansionZoneAfter; + + @Schema(description = "膨胀区域左") + @ExcelProperty("膨胀区域左") + private BigDecimal expansionZoneLeft; + + @Schema(description = "膨胀区域右") + @ExcelProperty("膨胀区域右") + private BigDecimal expansionZoneRight; + + @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") + @ExcelProperty("车头朝向( 0:正向 1:反向)") + private Integer toward; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java index d284e00e4..b690a2db1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.controller.admin.positionmap.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -36,4 +37,31 @@ public class PositionMapLineSaveReqVO { @Schema(description = "反向限速(m/s)", example = "15890") private BigDecimal reverseSpeedLimit; + @Schema(description = "开始控制点x轴") + private String beginControlX; + + @Schema(description = "开始控制点y轴") + private String beginControlY; + + @Schema(description = "结束控制点x轴") + private String endControlX; + + @Schema(description = "结束控制点y轴") + private String endControlY; + + @Schema(description = "膨胀区域前") + private BigDecimal expansionZoneFront; + + @Schema(description = "膨胀区域后") + private BigDecimal expansionZoneAfter; + + @Schema(description = "膨胀区域左") + private BigDecimal expansionZoneLeft; + + @Schema(description = "膨胀区域右") + private BigDecimal expansionZoneRight; + + @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") + private Integer toward; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationStatisticsVO.java index a4a8a2cf0..9811bf351 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationStatisticsVO.java @@ -24,4 +24,7 @@ public class RobotInformationStatisticsVO { @Schema(description = "故障") private Integer fault = 0; + @Schema(description = "总数") + private Integer total = 0; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java index 676560b64..263c48b84 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -58,4 +59,41 @@ public class PositionMapLineDO extends BaseDO { */ private BigDecimal reverseSpeedLimit; + /** + * 开始控制点x轴 + */ + private String beginControlX; + /** + * 开始控制点y轴 + */ + private String beginControlY; + /** + * 结束控制点x轴 + */ + private String endControlX; + /** + * 结束控制点y轴 + */ + private String endControlY; + /** + * 膨胀区域前 + */ + private BigDecimal expansionZoneFront; + /** + * 膨胀区域后 + */ + private BigDecimal expansionZoneAfter; + /** + * 膨胀区域左 + */ + private BigDecimal expansionZoneLeft; + /** + * 膨胀区域右 + */ + private BigDecimal expansionZoneRight; + + /** + * 车头朝向( 0:正向 1:反向) + */ + private Integer toward; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapLineMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapLineMapper.java index fbbdfbf93..5164edd0b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapLineMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapLineMapper.java @@ -3,10 +3,13 @@ package cn.iocoder.yudao.module.system.dal.mysql.positionmap; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionMapLineDTO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLinePageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 仓库点位地图连线 Mapper * @@ -24,4 +27,9 @@ public interface PositionMapLineMapper extends BaseMapperX { .orderByDesc(PositionMapLineDO::getId)); } + /** + * 查看所有的点位地图连线 + * @return + */ + List getAllPositionMapLine(PositionMapLineDO positionMapLineDO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/line/DirectionEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/line/DirectionEnum.java new file mode 100644 index 000000000..d99d2690d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/line/DirectionEnum.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.enums.line; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * ware_position_map_line表的direction + */ +@Getter +@AllArgsConstructor +public enum DirectionEnum { + + ONE_WAY(1,"单向"), + TWO_WAY(2,"双向"); + /** + * 类型 + */ + private final Integer type; + + private final String msg; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/RobotTopicEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/RobotTopicEnum.java deleted file mode 100644 index b2918c6b3..000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/RobotTopicEnum.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.iocoder.yudao.module.system.enums.robot; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public enum RobotTopicEnum { - ROBOT_TASK("ROBOT_TASK_"); //下发指令给车机 - /** - * 类型 - */ - private final String topic; -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/mqtt/MqttConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/mqtt/MqttConfiguration.java index c1b9b0ca8..5eba2f688 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/mqtt/MqttConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/mqtt/MqttConfiguration.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.system.framework.mqtt; +import cn.iocoder.yudao.module.mqtt.api.path.PathPlanningApi; import cn.iocoder.yudao.module.mqtt.api.task.RobotTaskApi; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {RobotTaskApi.class}) +@EnableFeignClients(clients = {RobotTaskApi.class, PathPlanningApi.class}) public class MqttConfiguration { } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java index 283ebf1e0..70edf32d3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.system.service.path; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; + public interface PathPlanningService { - void synchronousPoint(); + void synchronousPoint(PositionMapSaveReqVO positionMapSaveReqVO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java index 5a0a90c4b..8fc0fcc20 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java @@ -1,8 +1,30 @@ package cn.iocoder.yudao.module.system.service.path; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mqtt.api.path.PathPlanningApi; +import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionMapLineDTO; +import cn.iocoder.yudao.module.mqtt.api.path.dto.RelatedPathNode; +import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO; +import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapLineMapper; +import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapMapper; +import cn.iocoder.yudao.module.system.enums.line.DirectionEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.PATH_PLANNING_NOT_EXISTS; /** * 同步信息给车辆 @@ -12,11 +34,120 @@ import org.springframework.validation.annotation.Validated; public class PathPlanningServiceImpl implements PathPlanningService { + @Resource + private PositionMapLineMapper positionMapLineMapper; + + @Resource + private PositionMapMapper positionMapMapper; + + public static ExecutorService executor = Executors.newFixedThreadPool(5); + + @Resource + private PathPlanningApi pathPlanningApi; + /** * 同步全部的点位信息 */ @Override - public void synchronousPoint() { + public void synchronousPoint(PositionMapSaveReqVO data) { + + List positionMapDOS = positionMapMapper.selectList(new LambdaQueryWrapperX() + .eq(ObjectUtil.isNotEmpty(data.getFloor()), PositionMapDO::getFloor, data.getFloor()) + .eq(ObjectUtil.isNotEmpty(data.getArea()), PositionMapDO::getArea, data.getArea())); + + PositionMapLineDO positionMapLineDO = new PositionMapLineDO(); + List positionLines = positionMapLineMapper.getAllPositionMapLine(positionMapLineDO); + +// List positionLines = positionMapLineMapper.selectList(new LambdaQueryWrapperX()); + if (ObjectUtil.isEmpty(positionMapDOS) || ObjectUtil.isEmpty(positionLines)) { + throw exception(PATH_PLANNING_NOT_EXISTS); + } + + Map> positionMapLineMap = positionLines.stream() + .collect(Collectors.groupingBy(PositionMapLineDTO::getPositionMapId)); + for (PositionMapDO positionMapDO : positionMapDOS) { + RelatedPathNode relatedPathNode = new RelatedPathNode(); + relatedPathNode.setFloor(positionMapDO.getFloor()); + relatedPathNode.setArea(positionMapDO.getArea()); + List positionMapLineDOS = positionMapLineMap.get(positionMapDO.getId()); + if (ObjectUtil.isEmpty(positionMapLineDOS)) { + continue; + } + + assembleDataToPP(relatedPathNode,positionMapLineDOS); + } } + + /** + * 组装数据发送到PP + * @param relatedPathNode + * @param positionMapLineDOS + */ + private void assembleDataToPP(RelatedPathNode relatedPathNode, List positionMapLineDOS) { + executor.execute(() -> { + List list = new ArrayList<>(); + for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) { + list.add(positionMapLineDO); + if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) { + continue; + } + + PositionMapLineDTO build = PositionMapLineDTO.builder() + .id(positionMapLineDO.getId()) + .positionMapId(positionMapLineDO.getPositionMapId()) + .startingPointId(positionMapLineDO.getEndPointId()) + .endPointId(positionMapLineDO.getStartingPointId()) + .direction(1) + .forwardSpeedLimit(positionMapLineDO.getReverseSpeedLimit()) + .reverseSpeedLimit(positionMapLineDO.getForwardSpeedLimit()) + .beginControlX(positionMapLineDO.getEndControlX()) + .beginControlY(positionMapLineDO.getEndControlY()) + .endControlX(positionMapLineDO.getBeginControlX()) + .endControlY(positionMapLineDO.getBeginControlY()) + .expansionZoneFront(positionMapLineDO.getExpansionZoneAfter()) + .expansionZoneAfter(positionMapLineDO.getExpansionZoneFront()) + .expansionZoneLeft(positionMapLineDO.getExpansionZoneRight()) + .expansionZoneRight(positionMapLineDO.getExpansionZoneLeft()) + .toward(positionMapLineDO.getToward()) + .build(); + list.add(build); + } + + relatedPathNode.setControl_nodes(list); + + pathPlanningApi.synchronousPointToPP(relatedPathNode, PathPlanningTopicConstant.SYNCHRONOUS_MAP_POINT); + }); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java index f0010a045..41a08e126 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java @@ -180,7 +180,7 @@ public class RobotInformationServiceImpl implements RobotInformationService { } if (RobotStatisticsTypeEnum.OFFLINE.getType().equals(pageReqVO.getRobotStatisticsType()) - && v.getOnlineStatus().equals(1)) { + && v.getOnlineStatus().equals(0)) { resultList.add(v); continue; } @@ -214,8 +214,6 @@ public class RobotInformationServiceImpl implements RobotInformationService { v.setElectricity(robotStatusDataPoseDTO.getBat_soc()); v.setFloor(robotStatusDataPoseDTO.getFloor()); v.setArea(robotStatusDataPoseDTO.getArea()); - }else if (ObjectUtil.isEmpty(object)) { - //离线 v.setOnlineStatus(1); } @@ -272,30 +270,33 @@ public class RobotInformationServiceImpl implements RobotInformationService { for (RobotInformationDO v : existRobot) { String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT_SOC +v.getMacAddress(); Object object = redisUtil.get(pose2dKey); + if (ObjectUtil.isEmpty(object)) { + //离线 offline++; - }else if (RobotTaskModelEnum.REJECTION.getType().equals(v.getRobotTaskModel())) { + } + + if (RobotTaskModelEnum.REJECTION.getType().equals(v.getRobotTaskModel())) { + //锁定 doLock++; - }else if (RobotStatusEnum.STAND_BY.getType().equals(v.getRobotStatus())) { - - //查看机器人最后做的任务是不是充电 - RobotTaskDetailDO robotTaskDetailDO = taskDetailMapper.selectOne(new LambdaQueryWrapper() - .eq(RobotTaskDetailDO::getRobotNo, v.getRobotNo()) - .orderByDesc(RobotTaskDetailDO::getCreateTime) - .last("limit 1")); - if (ObjectUtil.isNotEmpty(robotTaskDetailDO) - && RobotTaskTypeEnum.CHARGE.getType().equals(robotTaskDetailDO.getTaskType()) - && RobotTaskStatusEnum.DOING.getType().equals(robotTaskDetailDO.getTaskStatus())) { - charge++; - }else { - standby++; - } - - }else if (RobotStatusEnum.DOING.getType().equals(v.getRobotStatus())) { - inTask++; - } else { + } + //设置异常 + String errorLevelKey = RobotTaskChcheConstant.ROBOT_ERROR_LEVEL +v.getMacAddress(); + Object errorLevel = redisUtil.get(errorLevelKey); + if (ObjectUtil.isNotEmpty(errorLevel) && Integer.valueOf(errorLevel.toString()).intValue() >= 3) { fault++; } + + if (RobotStatusEnum.STAND_BY.getType().equals(v.getRobotStatus())) { + //待命中 + standby++; + }else if (RobotStatusEnum.CHARGE.getType().equals(v.getRobotStatus())) { + //充电中 + charge++; + }else { + //任务中 + inTask++; + } } info.setStandby(standby); info.setInTask(inTask); @@ -303,6 +304,7 @@ public class RobotInformationServiceImpl implements RobotInformationService { info.setOffline(offline); info.setCharge(charge); info.setFault(fault); + info.setTotal(existRobot.size()); return info; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java index 04f639da2..1f1065c28 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotAcceptTaskData; import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDataPoseDTO; import cn.iocoder.yudao.module.system.constant.robot.RobotStatusCodeConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant; +import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant; import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigVO; import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO; import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO; @@ -405,7 +406,7 @@ public class DistributeTasksServiceImpl implements DistributeTasksService { RobotAcceptTaskDTO robotTaskDO = new RobotAcceptTaskDTO(); robotTaskDO.setOrder_id(taskDetailDO.getId().toString()); robotTaskDO.setOrder_type("出库");//未定 - robotTaskDO.setTopic(RobotTopicEnum.ROBOT_TASK.getTopic()+macAddress); + robotTaskDO.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC+macAddress); //1 RobotAcceptTaskData taskOne = new RobotAcceptTaskData(); @@ -473,7 +474,7 @@ public class DistributeTasksServiceImpl implements DistributeTasksService { RobotAcceptTaskDTO robotTaskDO = new RobotAcceptTaskDTO(); robotTaskDO.setOrder_id(taskDetailDO.getId().toString()); robotTaskDO.setOrder_type("出库");//未定 - robotTaskDO.setTopic(RobotTopicEnum.ROBOT_TASK.getTopic()+macAddress); + robotTaskDO.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC+macAddress); RobotAcceptTaskData taskOne = new RobotAcceptTaskData(); taskOne.setSerial("1"); @@ -532,7 +533,7 @@ public class DistributeTasksServiceImpl implements DistributeTasksService { RobotAcceptTaskDTO robotTaskDO = new RobotAcceptTaskDTO(); robotTaskDO.setOrder_id(taskDetailDO.getId().toString()); robotTaskDO.setOrder_type("出库");//未定 - robotTaskDO.setTopic(RobotTopicEnum.ROBOT_TASK.getTopic()+macAddress); + robotTaskDO.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC+macAddress); //1 RobotAcceptTaskData taskOne = new RobotAcceptTaskData(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapLineMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapLineMapper.xml index 3f42eda43..d3a8ee907 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapLineMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapLineMapper.xml @@ -2,11 +2,358 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, + position_map_id, + starting_point_id, + end_point_id, + begin_control_x, + begin_control_y, + end_control_x, + end_control_y, + expansion_zone_front, + expansion_zone_after, + expansion_zone_left, + expansion_zone_right, + method, + direction, + forward_speed_limit, + reverse_speed_limit, + creator, + toward + + + + + + + + + + update ware_position_map_line + + + position_map_id = #{positionMapId}, + + + starting_point_id = #{startingPointId}, + + + end_point_id = #{endPointId}, + + + begin_control_x = #{beginControlX}, + + + begin_control_y = #{beginControlY}, + + + end_control_x = #{endControlX}, + + + end_control_y = #{endControlY}, + + + expansion_zone_front = #{expansionZoneFront}, + + + expansion_zone_after = #{expansionZoneAfter}, + + + expansion_zone_left = #{expansionZoneLeft}, + + + expansion_zone_right = #{expansionZoneRight}, + + + method = #{method}, + + + direction = #{direction}, + + + forward_speed_limit = #{forwardSpeedLimit}, + + + reverse_speed_limit = #{reverseSpeedLimit}, + + + creator = #{creator}, + + + create_time = #{createTime}, + + + updater = #{updater}, + + + update_time = #{updateTime}, + + + deleted = #{deleted}, + + + toward = #{toward}, + + + where id = #{id} + + From 30e724afe894b0ce1a315daa02930f07ee25ec8f Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Sat, 15 Feb 2025 09:26:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../path/PathPlanningTopicConstant.java | 19 +++++++++-- .../vo/PositionMapLinePageReqVO.java | 23 ------------- .../positionmap/vo/PositionMapLineRespVO.java | 32 ------------------ .../vo/PositionMapLineSaveReqVO.java | 23 ------------- .../positionmap/PositionMapLineDO.java | 33 ------------------- .../service/path/PathPlanningServiceImpl.java | 2 +- 6 files changed, 18 insertions(+), 114 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java index ac47706e3..a9698d803 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java @@ -5,9 +5,24 @@ package cn.iocoder.yudao.module.system.constant.path; */ public class PathPlanningTopicConstant { /** - * 同步地图点位 + * 同步全部地图点位 */ - public static String SYNCHRONOUS_MAP_POINT = "SYNCHRONOUS_MAP_POINT"; + public static String SYNCHRONOUS_ALL_MAP_POINT = "SYNCHRONOUS_MAP_POINT"; + + /** + * 添加地图点位给PP + */ + public static String ADD_MAP_POINT = "ADD_MAP_POINT"; + + /** + * 删除地图点位 + */ + public static String DELETE_MAP_POINT = "DELETE_MAP_POINT"; + + /** + * 更新地图点位 + */ + public static String UPDATE_MAP_POINT = "UPDATE_MAP_POINT"; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java index 7977ffd08..dc7fdc236 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLinePageReqVO.java @@ -68,29 +68,6 @@ public class PositionMapLinePageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - @Schema(description = "开始控制点x轴") - private String beginControlX; - - @Schema(description = "开始控制点y轴") - private String beginControlY; - - @Schema(description = "结束控制点x轴") - private String endControlX; - - @Schema(description = "结束控制点y轴") - private String endControlY; - - @Schema(description = "膨胀区域前") - private BigDecimal expansionZoneFront; - - @Schema(description = "膨胀区域后") - private BigDecimal expansionZoneAfter; - - @Schema(description = "膨胀区域左") - private BigDecimal expansionZoneLeft; - - @Schema(description = "膨胀区域右") - private BigDecimal expansionZoneRight; @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") private Integer toward; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java index 77fdab6d4..1d8340dae 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineRespVO.java @@ -81,38 +81,6 @@ public class PositionMapLineRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; - @Schema(description = "开始控制点x轴") - @ExcelProperty("开始控制点x轴") - private String beginControlX; - - @Schema(description = "开始控制点y轴") - @ExcelProperty("开始控制点y轴") - private String beginControlY; - - @Schema(description = "结束控制点x轴") - @ExcelProperty("结束控制点x轴") - private String endControlX; - - @Schema(description = "结束控制点y轴") - @ExcelProperty("结束控制点y轴") - private String endControlY; - - @Schema(description = "膨胀区域前") - @ExcelProperty("膨胀区域前") - private BigDecimal expansionZoneFront; - - @Schema(description = "膨胀区域后") - @ExcelProperty("膨胀区域后") - private BigDecimal expansionZoneAfter; - - @Schema(description = "膨胀区域左") - @ExcelProperty("膨胀区域左") - private BigDecimal expansionZoneLeft; - - @Schema(description = "膨胀区域右") - @ExcelProperty("膨胀区域右") - private BigDecimal expansionZoneRight; - @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") @ExcelProperty("车头朝向( 0:正向 1:反向)") private Integer toward; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java index c8294c69a..b9e91cf7b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapLineSaveReqVO.java @@ -61,29 +61,6 @@ public class PositionMapLineSaveReqVO { @Schema(description = "反向限速(m/s)", example = "15890") private BigDecimal reverseSpeedLimit; - @Schema(description = "开始控制点x轴") - private String beginControlX; - - @Schema(description = "开始控制点y轴") - private String beginControlY; - - @Schema(description = "结束控制点x轴") - private String endControlX; - - @Schema(description = "结束控制点y轴") - private String endControlY; - - @Schema(description = "膨胀区域前") - private BigDecimal expansionZoneFront; - - @Schema(description = "膨胀区域后") - private BigDecimal expansionZoneAfter; - - @Schema(description = "膨胀区域左") - private BigDecimal expansionZoneLeft; - - @Schema(description = "膨胀区域右") - private BigDecimal expansionZoneRight; @Schema(description = "车头朝向( 0:正向 1:反向)", example = "15890") private Integer toward; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java index 5408adf1b..8db02267e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapLineDO.java @@ -91,39 +91,6 @@ public class PositionMapLineDO extends BaseDO { */ private BigDecimal reverseSpeedLimit; - /** - * 开始控制点x轴 - */ - private String beginControlX; - /** - * 开始控制点y轴 - */ - private String beginControlY; - /** - * 结束控制点x轴 - */ - private String endControlX; - /** - * 结束控制点y轴 - */ - private String endControlY; - /** - * 膨胀区域前 - */ - private BigDecimal expansionZoneFront; - /** - * 膨胀区域后 - */ - private BigDecimal expansionZoneAfter; - /** - * 膨胀区域左 - */ - private BigDecimal expansionZoneLeft; - /** - * 膨胀区域右 - */ - private BigDecimal expansionZoneRight; - /** * 车头朝向( 0:正向 1:反向) */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java index 8fc0fcc20..43c8b3d64 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java @@ -116,7 +116,7 @@ public class PathPlanningServiceImpl implements PathPlanningService { relatedPathNode.setControl_nodes(list); - pathPlanningApi.synchronousPointToPP(relatedPathNode, PathPlanningTopicConstant.SYNCHRONOUS_MAP_POINT); + pathPlanningApi.synchronousPointToPP(relatedPathNode, PathPlanningTopicConstant.SYNCHRONOUS_ALL_MAP_POINT); }); }