diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java index 1108715ef..a06ef9e99 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java @@ -47,7 +47,7 @@ public class RobotStatusApiImpl implements RobotStatusApi { @Resource private RequestProcessor processor; - private static final ExecutorService executorService = Executors.newFixedThreadPool(5); + private static final ExecutorService executorService = Executors.newFixedThreadPool(20); @Resource private CommonApi commonApi; @@ -109,11 +109,9 @@ public class RobotStatusApiImpl implements RobotStatusApi { redisUtil.set(pose2dKey, JSON.toJSONString(robotStatusDataPoseDTO), robotPositionCacheTime); - //机器人身上是否有货 - String taskStatusKey = RobotTaskChcheConstant.ROBOT_TASK_STATUS + robotStatusDataDTO.getMac(); - String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + robotStatusDataDTO.getMac(); - redisUtil.set(taskStatusKey, robotStatusDataDTO.getTaskStatus(), robotPositionCacheTime); - redisUtil.set(cargoDetectedKey, robotStatusDataDTO.getCargoDetected(), robotPositionCacheTime); + executorService.execute(() ->{ + sendToPP(robotStatusDataPoseDTO); + }); // -- 通过mac 地址获取车辆信息 - (并且加入到缓存中) Map robotInformationVOS = robotInformationService.getAllRobotByRedis(); @@ -123,15 +121,27 @@ public class RobotStatusApiImpl implements RobotStatusApi { } robotInformationVO.setPose2d(robotStatusDataPoseDTO); - Map map = new HashMap<>(); - String value = FloorAreaConstant.FLOOR_AREA_ROBOT + floorZoneDTO.getFloor() + CommonConstant.SYMBOL + floorZoneDTO.getArea(); - map.put(robotStatusDataDTO.getMac(), JSON.toJSONString(robotInformationVO)); - redisUtil.hmset(value, map, 20); + RobotInformationVO finalRobotInformationVO = robotInformationVO; + + executorService.execute(() ->{ + //机器人身上是否有货 + String taskStatusKey = RobotTaskChcheConstant.ROBOT_TASK_STATUS + robotStatusDataDTO.getMac(); + String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + robotStatusDataDTO.getMac(); + redisUtil.set(taskStatusKey, robotStatusDataDTO.getTaskStatus(), robotPositionCacheTime); + redisUtil.set(cargoDetectedKey, robotStatusDataDTO.getCargoDetected(), robotPositionCacheTime); + Map map = new HashMap<>(); + String value = FloorAreaConstant.FLOOR_AREA_ROBOT + floorZoneDTO.getFloor() + CommonConstant.SYMBOL + floorZoneDTO.getArea(); + map.put(robotStatusDataDTO.getMac(), JSON.toJSONString(finalRobotInformationVO)); + redisUtil.hmset(value, map, 20); + }); + + executorService.execute(() ->{ + // 合并请求 - 这里接受到的数据都丢给 RequestProcessor - 再整合数据通过WebSocket丢给前端 + processor.handleRequest(floorZoneDTO.getFloor() + CommonConstant.SYMBOL + floorZoneDTO.getArea(), + robotStatusDataDTO.getMac(), JSONUtil.toJsonStr(finalRobotInformationVO)); + }); + - // 合并请求 - 这里接受到的数据都丢给 RequestProcessor - 再整合数据通过WebSocket丢给前端 - processor.handleRequest(floorZoneDTO.getFloor() + CommonConstant.SYMBOL + floorZoneDTO.getArea(), - robotStatusDataDTO.getMac(), JSONUtil.toJsonStr(robotInformationVO)); - sendToPP(robotStatusDataPoseDTO); } private void sendToPP(RobotStatusDataPoseDTO robotStatusDataPoseDTO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapItemMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapItemMapper.java index 9cfc0a128..53031782f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapItemMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionMapItemMapper.java @@ -95,6 +95,7 @@ public interface PositionMapItemMapper extends BaseMapperX { * @param ids * @return */ - @MapKey("id") - Map selectSortNumByIds(@Param("ids") List ids); + /*@MapKey("id") + Map selectSortNumByIds(@Param("ids") List ids);*/ + List selectSortNumByIds(@Param("ids") List ids); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapLineServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapLineServiceImpl.java index f30a5a0c1..a8065ae8a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapLineServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapLineServiceImpl.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLinePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLineSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO; import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapItemMapper; import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapLineMapper; @@ -65,7 +66,10 @@ public class PositionMapLineServiceImpl extends ServiceImpl endPointIds = addList.stream().map(PositionMapLineDO::getEndPointId).collect(Collectors.toList()); //合并startPointIds 和 endPointIds 并且去重 Set pointIds = CollUtil.unionDistinct(startPointIds, endPointIds); - map = positionMapItemMapper.selectSortNumByIds(new ArrayList<>(pointIds)); + List positionMapItemDOS = positionMapItemMapper.selectSortNumByIds(new ArrayList<>(pointIds)); + if (ObjectUtil.isNotEmpty(positionMapItemDOS)) { + map = positionMapItemDOS.stream().collect(Collectors.toMap(PositionMapItemDO::getId, PositionMapItemDO::getSortNum)); + } } for (PositionMapLineDO positionMapLineDO : newList) { positionMapLineDO.setPositionMapId(positionMapId); 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 0675c6503..c7db4ded8 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 @@ -86,7 +86,7 @@ (#{item.positionMapId}, #{item.actualLocationX}, #{item.actualLocationY}, #{item.type}) - select id, sort_num as sortNum