From 7a11ac04bd55c34fd299d701c41ccf6e5c7a0378 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Fri, 4 Jul 2025 16:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E4=BD=8D=E7=BC=96=E5=8F=B7=E5=92=8C?= =?UTF-8?q?=E9=81=BF=E9=9A=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mqtt/api/path/dto/PositionMapLineDTO.java | 1 + .../system/config/mqtt/util/MqttUtils.java | 4 +- .../positionmap/vo/PositionMapPageReqVO.java | 3 ++ .../positionmap/vo/PositionMapRespVO.java | 3 ++ .../positionmap/vo/PositionMapSaveReqVO.java | 2 + .../dataobject/positionmap/PositionMapDO.java | 5 +++ .../strategy/HouseLocationStrategyImpl.java | 38 +++++++++++++++++-- .../service/path/PathPlanningServiceImpl.java | 1 + .../positionmap/PositionMapService.java | 2 + .../positionmap/PositionMapServiceImpl.java | 8 ++++ .../positionmap/PositionMapLineMapper.xml | 3 +- 11 files changed, 63 insertions(+), 7 deletions(-) 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 index c1df7f708..56284ab2b 100644 --- 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 @@ -111,6 +111,7 @@ public class PositionMapLineDTO { @Schema(description = "发送给路径规划 车头朝向(0正 1反 2随)", example = "15890") private Integer ppToward; + private Integer collisionAvoidanceFlag; private static final List ANTI_LIST = Arrays.asList(1, 3, 6); private static final List WHATEVER_LIST = Arrays.asList(4, 7, 8); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/mqtt/util/MqttUtils.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/mqtt/util/MqttUtils.java index a0fff047e..6d38900a1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/mqtt/util/MqttUtils.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/mqtt/util/MqttUtils.java @@ -71,8 +71,8 @@ public class MqttUtils { return; } - if (message.length() > 510) { - log.info("111111发送的主题 :{}, 内容 :{}",topic, message.substring(0, 500)); + if (message.length() > 1010) { + log.info("111111发送的主题 :{}, 内容 :{}",topic, message.substring(0, 1000)); }else { log.info("111111发送的主题 :{}, 内容 :{}",topic, message); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapPageReqVO.java index 3a02e71a1..11e8fc57d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapPageReqVO.java @@ -36,4 +36,7 @@ public class PositionMapPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + @Schema(description = "库位编号排序") + private Long locationNoSort; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapRespVO.java index 1c40b6f54..c7762659a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapRespVO.java @@ -40,4 +40,7 @@ public class PositionMapRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "库位编号排序") + private Long locationNoSort; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapSaveReqVO.java index 426999d27..11978eea9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionMapSaveReqVO.java @@ -25,4 +25,6 @@ public class PositionMapSaveReqVO { @Schema(description = "AGV地图yaml路径") private String yamlUrl; + @Schema(description = "库位编号排序") + private Long locationNoSort; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapDO.java index d2d002890..9b6ee20ed 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionMapDO.java @@ -47,4 +47,9 @@ public class PositionMapDO extends BaseDO { */ private String yamlUrl; + /** + * 库位编号排序 + */ + private Long locationNoSort; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/handler/mapnode/strategy/HouseLocationStrategyImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/handler/mapnode/strategy/HouseLocationStrategyImpl.java index 8cd262fc0..84d2439f4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/handler/mapnode/strategy/HouseLocationStrategyImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/handler/mapnode/strategy/HouseLocationStrategyImpl.java @@ -8,8 +8,10 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationRespVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.NodeBaseDTO; import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.service.houselocation.HouseLocationService; +import cn.iocoder.yudao.module.system.service.positionmap.PositionMapService; import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -28,6 +30,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; import static com.baomidou.mybatisplus.core.toolkit.IdWorker.getId; + @Slf4j @Component public class HouseLocationStrategyImpl implements NodeProcessingStrategy { @@ -38,6 +41,9 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy { @Lazy private RobotTaskDetailService taskDetailService; + @Resource + private PositionMapService positionMapService; + //库位编号格式 - 第一个通配符为地图id 第二个通配符为随机数四位最后一个通配符为库位点层数 private static final String KW_NO_FORMAT = "KW-%s-%s-%s"; @@ -47,6 +53,9 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy { // -- 将data里面的json 数据转为实体类 - 再对比节点id - 然后做新增删除修改操作 List newList = new ArrayList<>(); + PositionMapDO positionMap = positionMapService.getPositionMap(positionMapId); + Long locationNoSort = positionMap.getLocationNoSort(); + for (NodeBaseDTO item : nodeBaseDTOS) { if (item.getId() == null) { item.setId(getId()); @@ -55,11 +64,30 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy { // -- 如果是库位点 - 可能是一对多情况 - 需要将多个库位点的id set进去 List wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class); // -- 筛选出 库位编号不为空 - 并且第最后一组数据 最大的值 - 如果没有则为0 - int max = wareHouseLocationDOS.stream().map(WareHouseLocationDO::getLocationNo).filter(StrUtil::isNotEmpty) - .mapToInt(s -> Integer.parseInt(s.substring(s.length() - 1))).max().orElse(1); - boolean isNew = wareHouseLocationDOS.stream().allMatch(v -> ObjectUtil.isEmpty(v.getLocationNo())); +// int max = wareHouseLocationDOS.stream().map(WareHouseLocationDO::getLocationNo).filter(StrUtil::isNotEmpty) +// .mapToInt(s -> Integer.parseInt(s.substring(s.length() - 1))).max().orElse(1); +// boolean isNew = wareHouseLocationDOS.stream().allMatch(v -> ObjectUtil.isEmpty(v.getLocationNo())); + + int max = 1; + boolean isNew = true; + Long randomNumber = locationNoSort; + for (WareHouseLocationDO wareHouseLocation : wareHouseLocationDOS) { + if (ObjectUtil.isEmpty(wareHouseLocation.getLocationNo())) { + continue; + } + isNew = false; + int i = Integer.parseInt(wareHouseLocation.getLocationNo().substring(wareHouseLocation.getLocationNo().length() - 1)); + if (i > max) { + max = i; + } + String[] split = wareHouseLocation.getLocationNo().split("-"); + randomNumber = Long.valueOf(split[split.length - 2]); + } + if (!isNew) { max = max + 1; + } else { + locationNoSort = locationNoSort + 1L; } Long locationNumber = null; if (ObjectUtil.isNotEmpty(item.getLocationNumber())) { @@ -79,7 +107,8 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy { if (StrUtil.isEmpty(wareHouseLocationDO.getLocationNo())) { wareHouseLocationDO.setLocationStorey(max); // -- 生成库位编号 - - String locationNo = String.format(KW_NO_FORMAT, positionMapId, RandomUtil.randomNumbers(4), max++); +// String locationNo = String.format(KW_NO_FORMAT, positionMapId, RandomUtil.randomNumbers(4), max++); + String locationNo = String.format(KW_NO_FORMAT, positionMapId, randomNumber, max++); wareHouseLocationDO.setLocationNo(locationNo); } wareHouseLocationDO.setMapId(positionMapId); @@ -101,6 +130,7 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy { checkLocationHaveDoingTask(list); }*/ + positionMapService.updateNoSort(positionMap.getId(),locationNoSort); houseLocationService.batchSaveOrEditOrDel(positionMapId, list); } 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 2b08e3982..54ca2ed2a 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 @@ -741,6 +741,7 @@ public class PathPlanningServiceImpl implements PathPlanningService { .actualEndPointY(positionMapLineDO.getActualStartPointY()) .actualStartPointX(positionMapLineDO.getActualEndPointX()) .actualStartPointY(positionMapLineDO.getActualEndPointY()) + .collisionAvoidanceFlag(positionMapLineDO.getCollisionAvoidanceFlag()) .build(); return build; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java index f811e8e22..8d4e86ab5 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java @@ -125,4 +125,6 @@ public interface PositionMapService extends IService { * @return */ String getMapFileNameByFloorAndAreaName(Long floor, String areaId); + + void updateNoSort(Long id, Long locationNoSort); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java index c61601f46..49cefc299 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java @@ -577,6 +577,14 @@ public class PositionMapServiceImpl extends ServiceImpl getRemoteSingleMapInfomation(Map robotMap, List robotNos, Map robotDoingTaskMap, Map remoteMap) { 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 53bbb2052..cd3516116 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 @@ -152,7 +152,8 @@ actual_begin_control_x, actual_begin_control_y, actual_end_control_x, - actual_end_control_y + actual_end_control_y, + collision_avoidance_flag