From 0a16b93ace5a4bad2fb8a97e1f26d53439a59796 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Wed, 28 May 2025 17:01:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9B=BE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/enums/ErrorCodeConstants.java | 1 + .../api/robot/RobotTaskStatusApiImpl.java | 1 + .../api/robot/processor/RequestProcessor.java | 3 +- .../api/robot/schedul/ScheduledTasks.java | 3 +- .../system/api/robot/vo/RobotSkuInfoDTO.java | 5 ++ .../constant/webSocket/WebSocketConstant.java | 10 ++++ .../positionmap/PositionMapItemService.java | 6 ++ .../PositionMapItemServiceImpl.java | 55 +++++++++++++++++++ .../positionmap/PositionMapServiceImpl.java | 1 + ...obotWorkingHoursStatisticsServiceImpl.java | 2 +- .../mapper/housearea/HouseAreaMapper.xml | 2 +- .../mapper/houselane/WareHouseLaneMapper.xml | 2 +- .../houselocation/WareHouseLocationMapper.xml | 2 +- .../information/DeviceInformationMapper.xml | 2 +- .../mapper/parkingspot/ParkingSpotMapper.xml | 2 +- .../PositionChangePointBindingMapper.xml | 2 +- .../positionmap/PositionMapItemMapper.xml | 2 +- .../positionmap/PositionMapLineMapper.xml | 2 +- 18 files changed, 92 insertions(+), 11 deletions(-) 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 f2a631921..c727a14a0 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 @@ -245,6 +245,7 @@ public interface ErrorCodeConstants { ErrorCode THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_STORAGE_AREAS = new ErrorCode(1_002_038_008, "已有库位在其它区域内"); ErrorCode MAP_DOES_NOT_EXIST_AGV = new ErrorCode(1_002_038_009, "此楼层区域不存在车辆需要暂停或恢复"); ErrorCode MAP_EXIST_TASK_EXIST_TASK = new ErrorCode(1_002_038_010, "修改地图:此楼层区域存在处理中的任务或者库位上还有货物"); + ErrorCode MAP_EXIST_BINDING_POINT = new ErrorCode(1_002_038_011, "修改地图:此楼层区域的地图交换点尚未解绑"); // ========== 机器人自动移库 1-002-039-000 ========== ErrorCode TASK_AUTO_MOVE_NOT_EXISTS = new ErrorCode(1_002_039_001, "车辆自动移库不存在"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index 4b7861dee..d63cc2c66 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -322,6 +322,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { return; } RobotSkuInfoDTO robotSkuInfo = new RobotSkuInfoDTO(); + robotSkuInfo.setHaveSku(ZeroOneEnum.ONE.getType()); robotSkuInfo.setSkuNumber(wareHouseLocationDO.getSkuNumber()); robotSkuInfo.setSkuInfo(wareHouseLocationDO.getSkuInfo()); redisUtil.set(RobotTaskChcheConstant.ROBOT_TASK_SKU_INFO + robotCompleteTaskDTO.getMac(), JSON.toJSONString(robotSkuInfo)); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/processor/RequestProcessor.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/processor/RequestProcessor.java index b0cb69ae6..08e9489a2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/processor/RequestProcessor.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/processor/RequestProcessor.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.api.robot.processor; import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; +import cn.iocoder.yudao.module.system.constant.webSocket.WebSocketConstant; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -47,7 +48,7 @@ public class RequestProcessor { // -- 发送给对应的websocket // System.out.println("key:" + map + "发送数据:" + data); // log.info("key:" + map + "发送数据:" + data); - webSocketSenderApi.sendObject(map, "map_push", data); + webSocketSenderApi.sendObject(map, WebSocketConstant.MAP_PUSH, data); } public void shutdown() { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/schedul/ScheduledTasks.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/schedul/ScheduledTasks.java index 24eaa187b..05a34e645 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/schedul/ScheduledTasks.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/schedul/ScheduledTasks.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; import cn.iocoder.yudao.module.system.api.robot.vo.RobotInformationVO; import cn.iocoder.yudao.module.system.constant.area.FloorAreaConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant; +import cn.iocoder.yudao.module.system.constant.webSocket.WebSocketConstant; import cn.iocoder.yudao.module.system.controller.admin.robot.task.TaskAssignDTO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapService; @@ -85,7 +86,7 @@ public class ScheduledTasks { }); // log.info("3D发送数据:{}", JSON.toJSONString(map)); - webSocketSenderApi.sendObject(key, "3d_map_push", map); + webSocketSenderApi.sendObject(key, WebSocketConstant.THREE_D_MAP_PUSH, map); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotSkuInfoDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotSkuInfoDTO.java index 14be611e6..6e6333202 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotSkuInfoDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotSkuInfoDTO.java @@ -5,6 +5,11 @@ import lombok.Data; @Data public class RobotSkuInfoDTO { + /** + * 1:有物料, 0:没有物料 + */ + private Integer haveSku = 1; + /** * 物料信息 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/webSocket/WebSocketConstant.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/webSocket/WebSocketConstant.java index 9d82541e1..a35bdf2c2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/webSocket/WebSocketConstant.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/webSocket/WebSocketConstant.java @@ -7,4 +7,14 @@ public class WebSocketConstant { * webSocket推送车机要走的点位id */ public static String PLANNING_MOVE_POSE = "planning_move_pose"; + + /** + * 3D地图的信息 + */ + public static String THREE_D_MAP_PUSH = "3d_map_push"; + + /** + * 推送地图点位信息 + */ + public static String MAP_PUSH = "map_push"; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java index 339690007..f0675a354 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java @@ -145,4 +145,10 @@ public interface PositionMapItemService extends IService { * @param mapId */ void deleteByMapId(Long mapId); + + /** + * 校验此地图的交换点,有没有被其他地图绑定 + * @param mapId + */ + void checkHaveBindChangePoint(Long mapId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java index 45de108d2..1bf8bf8ad 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java @@ -12,26 +12,36 @@ import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSa import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapConditionDTO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotWarnMsgSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionChangePointBindingDO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO; +import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionChangePointBindingMapper; import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapItemMapper; import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; import cn.iocoder.yudao.module.system.enums.item.PositionMapItemEnum; import cn.iocoder.yudao.module.system.enums.item.UseStatusEnum; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; +import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService; import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static cn.hutool.core.collection.CollUtil.isNotEmpty; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAP_EXIST_BINDING_POINT; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAP_EXIST_TASK_EXIST_TASK; /** * 仓库点位地图子表 Service 实现类 @@ -50,6 +60,12 @@ public class PositionMapItemServiceImpl extends ServiceImpl list = positionMapItemMapper.selectList(new LambdaQueryWrapperX() + .eq(PositionMapItemDO::getPositionMapId, mapId) + .eq(PositionMapItemDO::getType,PositionMapItemEnum.CHANGE.getType())); + if (ObjectUtil.isEmpty(list)) { + return; + } + + List ids = list.stream().map(PositionMapItemDO::getId).collect(Collectors.toList()); + + List bindingList = positionChangePointBindingMapper.selectList(new LambdaQueryWrapperX() + .ne(PositionChangePointBindingDO::getPositionMapId, mapId) + .in(PositionChangePointBindingDO::getEndPointId, ids)); + + if (ObjectUtil.isEmpty(bindingList)) { + return; + } + + List sortNums = bindingList.stream().map(PositionChangePointBindingDO::getStartingPointSortNum).collect(Collectors.toList()); + + warnMsgService.sendWarnMsgToWebsocket(MAP_EXIST_TASK_EXIST_TASK.getMsg()); + RobotWarnMsgSaveReqVO warnMsgSaveReqVO = new RobotWarnMsgSaveReqVO(); + String locationStr = StringUtils.join(sortNums, ","); + if (locationStr.length() > 160) { + locationStr = locationStr.substring(0,160); + } + warnMsgSaveReqVO.setWarnMsg(MAP_EXIST_BINDING_POINT.getMsg()+locationStr); + warnMsgSaveReqVO.setWarnLevel(4); + warnMsgSaveReqVO.setWarnCode("MAP"); + warnMsgSaveReqVO.setSolveTime(LocalDateTime.now()); + warnMsgService.createWarnMsg(warnMsgSaveReqVO); + throw exception(MAP_EXIST_BINDING_POINT); + } + } 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 eae651db2..413173f5c 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 @@ -249,6 +249,7 @@ public class PositionMapServiceImpl extends ServiceImpl update ware_house_area - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselane/WareHouseLaneMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselane/WareHouseLaneMapper.xml index 8d245d54a..591bbe13e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselane/WareHouseLaneMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselane/WareHouseLaneMapper.xml @@ -11,7 +11,7 @@ update ware_house_lane - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml index f90f466ab..f41b00a35 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml @@ -81,7 +81,7 @@ update ware_house_location set - deleted = '1' + deleted = 1 where map_id = #{mapId} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/information/DeviceInformationMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/information/DeviceInformationMapper.xml index 4daa6d8e3..0cd0ae357 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/information/DeviceInformationMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/information/DeviceInformationMapper.xml @@ -32,7 +32,7 @@ update device_information set - deleted = '1' + deleted = 1 where position_map_id = #{mapId} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/parkingspot/ParkingSpotMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/parkingspot/ParkingSpotMapper.xml index 4a52cbe1a..0790321ac 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/parkingspot/ParkingSpotMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/parkingspot/ParkingSpotMapper.xml @@ -11,7 +11,7 @@ update ware_parking_spot - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml index b86155989..9584bc91a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml @@ -5,7 +5,7 @@ update ware_position_change_point_binding - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapItemMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapItemMapper.xml index 0de7de5d8..0399c9b84 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapItemMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionMapItemMapper.xml @@ -155,7 +155,7 @@ update ware_position_map_item - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId} 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 c329844ce..53bbb2052 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 @@ -37,7 +37,7 @@ update ware_position_map_line - set deleted = '1' + set deleted = 1 where position_map_id = #{mapId}