From 40a805f2f236f03da317be1b8e7712560b9c8493 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Thu, 10 Jul 2025 18:28:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=80=97=E6=97=B6/=E8=B4=A7?= =?UTF-8?q?=E5=8F=89=E6=A3=80=E6=B5=8B=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/path/task/TaskToPathPlanningDTO.java | 3 + .../api/robot/RemoteControllerProcessor.java | 14 ++-- .../server/TCPServerApplicationRunner.java | 2 +- .../module/system/api/path/PathApiImpl.java | 2 +- .../RobotTaskLineTimeConsumingDetailDTO.java | 1 + .../enums/robot/task/WorkProgressEnum.java | 4 +- .../task/TaskDistributionConsumer.java | 15 ++-- ...RobotTaskLineTimeConsumingServiceImpl.java | 20 ++++-- .../RobotTaskTimeConsumingServiceImpl.java | 1 + .../PlanningGraphMatchDataServiceImpl.java | 2 +- .../PlanningRobotLineDistanceServiceImpl.java | 1 + ...anningRobotWalkingDistanceServiceImpl.java | 22 +++++- .../mqtt/RobotWorkStatusServiceImpl.java | 1 - .../service/robot/RobotTaskServiceImpl.java | 13 ++-- .../RobotPathPlanningServiceImpl.java | 71 +++++++++++++------ .../log/RobotTaskTimeConsumingMapper.xml | 3 - 16 files changed, 121 insertions(+), 54 deletions(-) diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/task/TaskToPathPlanningDTO.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/task/TaskToPathPlanningDTO.java index db9a985dc..d9fbc4450 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/task/TaskToPathPlanningDTO.java +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/task/TaskToPathPlanningDTO.java @@ -58,6 +58,9 @@ public class TaskToPathPlanningDTO { @Schema(description = "取货高度") private Double takeHeight; + @Schema(description = "取货货叉高度") + private Double detectHeight; + @Schema(description = "放货高度") private Double releaseHeight; diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/api/robot/RemoteControllerProcessor.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/api/robot/RemoteControllerProcessor.java index 56d54ce40..d1ae7d88d 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/api/robot/RemoteControllerProcessor.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/api/robot/RemoteControllerProcessor.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.remote.controller.admin.robot.dto.RemoteControlle import cn.iocoder.yudao.module.remote.enums.robot.RemoteIpTypeEnum; import cn.iocoder.yudao.module.remote.util.crc.CRCUtil; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO; +import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -52,13 +53,15 @@ public class RemoteControllerProcessor { @Autowired private IpProperties ipProperties; - public void addCache(RemoteRobotTransferDTO dto,String ip) { + public void addCache(RemoteRobotTransferDTO dto, String ip) { + log.info("网页端IP :{}", ip); Cockpit cockpit = ipProperties.getCockpitByIp(ip); + log.info("SOCKET服务端信息 :{}", JSON.toJSONString(cockpit)); String cockpitIp = cockpit.getControllerIp(); int cockpitPort = cockpit.getControllerPort(); RemoteControllerSocketDTO remoteControllerSocketDTO = cache.get(cockpitIp); - log.info("是否为空 :{}",ObjectUtil.isEmpty(remoteControllerSocketDTO)); + log.info("是否为空 :{}", ObjectUtil.isEmpty(remoteControllerSocketDTO)); if (ObjectUtil.isNotEmpty(remoteControllerSocketDTO)) { try { Socket socket = remoteControllerSocketDTO.getSocket(); @@ -95,6 +98,7 @@ public class RemoteControllerProcessor { * @param type */ public void setMsg(RemoteControllerSocketDTO remoteControllerSocket, Integer type, RemoteRobotTransferDTO dto) { + log.info("驾舱控制的车辆IP :{}, 端口:{}", dto.getRobotIp(), dto.getRobotPort()); String msg = defaultMsg; if (RemoteIpTypeEnum.ONE.getType().equals(type)) { msg = msg + " " + ONE; @@ -105,7 +109,7 @@ public class RemoteControllerProcessor { String[] split = dto.getRobotIp().split("\\."); for (String ipItem : split) { String hex = Integer.toHexString(Integer.valueOf(ipItem)).toUpperCase(); - if (hex.length()==1){ + if (hex.length() == 1) { hex = 0 + hex; } msg = msg + " " + hex; @@ -143,7 +147,7 @@ public class RemoteControllerProcessor { remoteControllerSocket.setMsg(msg); } - public void remoteCache(RemoteRobotTransferDTO dto,String ip) { + public void remoteCache(RemoteRobotTransferDTO dto, String ip) { Cockpit cockpit = ipProperties.getCockpitByIp(ip); String cockpitIp = cockpit.getControllerIp(); RemoteControllerSocketDTO remoteControllerSocketDTO = cache.get(cockpitIp); @@ -184,7 +188,7 @@ public class RemoteControllerProcessor { } } - remoteCache(dto,ip); + remoteCache(dto, ip); } diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/config/server/TCPServerApplicationRunner.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/config/server/TCPServerApplicationRunner.java index d0edd9e96..6689bf585 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/config/server/TCPServerApplicationRunner.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/config/server/TCPServerApplicationRunner.java @@ -40,7 +40,7 @@ public class TCPServerApplicationRunner implements ApplicationRunner { InputStream is=socket.getInputStream(); byte[] bytes=new byte[1024]; int len=is.read(bytes); - log.info("服务端收到的数据 :{}",new String(bytes,0,len)); + System.out.println(new String(bytes,0,len)); OutputStream os= socket.getOutputStream(); //响应给客户端 os.write("server :".getBytes()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java index 322ea977d..0ccaf41e9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java @@ -146,7 +146,7 @@ public class PathApiImpl implements PathApi { @Override public void graphMatchData(String message) { TenantContextHolder.setTenantId(1L); - log.info("111111路径规划匹配路网的消息 :{}",message); +// log.info("111111路径规划匹配路网的消息 :{}",message); pathPlanningService.graphMatchData(message); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/dto/RobotTaskLineTimeConsumingDetailDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/dto/RobotTaskLineTimeConsumingDetailDTO.java index 2b0f9dc74..d45a8953b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/dto/RobotTaskLineTimeConsumingDetailDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/log/dto/RobotTaskLineTimeConsumingDetailDTO.java @@ -24,5 +24,6 @@ public class RobotTaskLineTimeConsumingDetailDTO { * 行走总耗时(秒) */ private String timeConsuming; + private String orderId; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/WorkProgressEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/WorkProgressEnum.java index ffe96d5ef..d2276e880 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/WorkProgressEnum.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/WorkProgressEnum.java @@ -7,7 +7,9 @@ import lombok.Getter; @AllArgsConstructor public enum WorkProgressEnum { - FORK_OFFSET("FORK_OFFSET","取放货"); + FORK_OFFSET("FORK_OFFSET","取放货"), + FORK_AND_TILT("FORK_AND_TILT","初始化货叉"), + FORK_AND_TILT_INIT("FORK_AND_TILT_INIT","取完货"); /** * 类型 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java index 121099250..dca046a26 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.enums.robot.CommandTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.WorkProgressEnum; import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; import cn.iocoder.yudao.module.system.service.log.RobotTaskTimeConsumingService; @@ -55,7 +56,7 @@ public class TaskDistributionConsumer { @EventListener @Async public void onMessage(TaskDistributionMessage message) { - log.info("111111, 任务id : {}", JSON.toJSONString(message)); + log.info("111111, 任务 : {}", JSON.toJSONString(message)); TenantContextHolder.setTenantId(1L); if (RobotTaskEventTypeEnum.DISTRIBUTION.getType().equals(message.getEventType())) { RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(Long.valueOf(message.getMessage())); @@ -168,7 +169,7 @@ public class TaskDistributionConsumer { public Long getSeconds(Object startObj, Object endObj) { String startObjStr = startObj.toString(); String endObjStr = endObj.toString(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); LocalDateTime startTime = LocalDateTime.parse(startObjStr, formatter); LocalDateTime endTime = LocalDateTime.parse(endObjStr, formatter); Duration duration = Duration.between(startTime, endTime); @@ -182,11 +183,13 @@ public class TaskDistributionConsumer { * @param data */ private void addTaskTimeLog(RobotWorkStatusDTO data) { - if (CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType()) - && RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))) { - startPickUp(data); - } else if (CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType()) + if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(data.getCommandType()) + && WorkProgressEnum.FORK_AND_TILT_INIT.getType().equals(data.getWorkProgress()) && RobotExecutionStateConstant.DOING.equals(Integer.valueOf(data.getExecutionState()))) { + startPickUp(data); + } else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(data.getCommandType()) + && WorkProgressEnum.FORK_AND_TILT_INIT.getType().equals(data.getWorkProgress()) + && RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))) { endPickUp(data); } else if (CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType()) && RobotExecutionStateConstant.DONE.equals(Integer.valueOf(data.getExecutionState()))) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskLineTimeConsumingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskLineTimeConsumingServiceImpl.java index d33e63017..49ecedf82 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskLineTimeConsumingServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskLineTimeConsumingServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.log; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotTaskLineTimeConsumingDTO; import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotTaskLineTimeConsumingDetailDTO; import cn.iocoder.yudao.module.system.controller.admin.log.dto.RobotWalkingDistanceDTO; @@ -11,6 +12,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskLineTimeConsumingMapper; import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -35,6 +37,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.TASK_LINE_ */ @Service @Validated +@Slf4j public class RobotTaskLineTimeConsumingServiceImpl extends ServiceImpl implements RobotTaskLineTimeConsumingService { @Resource @@ -87,11 +90,11 @@ public class RobotTaskLineTimeConsumingServiceImpl extends ServiceImpl list = JSONUtil.toList(message, RobotTaskLineTimeConsumingDetailDTO.class); + Long orderId = Long.valueOf(list.get(0).getOrderId()); String taskNo = robotTaskDetailService.getTaskNoByDetailId(orderId); RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(orderId); - List list = data.getList(); List addList = new ArrayList<>(); for (RobotTaskLineTimeConsumingDetailDTO v : list) { RobotTaskLineTimeConsumingDO line = BeanUtils.toBean(v, RobotTaskLineTimeConsumingDO.class); @@ -99,6 +102,8 @@ public class RobotTaskLineTimeConsumingServiceImpl extends ServiceImpl 2) { + decimal = split[1].substring(0, 2); + } + return split[0] + "." + decimal; + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mqtt/RobotWorkStatusServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mqtt/RobotWorkStatusServiceImpl.java index ee8e6b642..874cac747 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mqtt/RobotWorkStatusServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mqtt/RobotWorkStatusServiceImpl.java @@ -13,7 +13,6 @@ public class RobotWorkStatusServiceImpl implements MqttService{ @Override public void analysisMessage(String message) { - log.info("作业实时行为上报 :{}", message); robotWorkStatusApi.robotWorkStatus(message); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java index 26ed1552f..f86196dfe 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java @@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.system.api.path.vo.RobotClosePathPlantingDTO; import cn.iocoder.yudao.module.system.config.mqtt.util.MqttUtils; import cn.iocoder.yudao.module.system.config.poperties.ZnConfigConstant; import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant; +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.log.vo.RobotTaskDetailActionLogSaveReqVO; @@ -478,10 +479,10 @@ public class RobotTaskServiceImpl extends ServiceImpl robotNos = new ArrayList<>(); - Map> robotFloorAreaJsonMap = new HashMap<>(); + Map> robotFloorAreaJsonMap = new HashMap<>(); for (RobotInformationDO robot : robots) { if (!RobotStatusEnum.STAND_BY.getType().equals(robot.getRobotStatus())) { continue; } if (ObjectUtil.isEmpty(robot.getFloorAreaJson())) { - log.info("车辆没有能行走的区域 :{}",robot.getRobotNo()); + log.info("车辆没有能行走的区域 :{}", robot.getRobotNo()); continue; } if (ObjectUtil.isNotEmpty(inStopPointRobotNos) && inStopPointRobotNos.contains(robot.getRobotNo())) { - log.info("车辆已经在停车点了 :{}",robot.getRobotNo()); + log.info("车辆已经在停车点了 :{}", robot.getRobotNo()); continue; } robotNos.add(robot.getRobotNo()); - robotFloorAreaJsonMap.put(robot.getRobotNo(),robot.getFloorAreaJson()); + robotFloorAreaJsonMap.put(robot.getRobotNo(), robot.getFloorAreaJson()); } if (ObjectUtil.isEmpty(robotNos)) { @@ -258,7 +259,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { } String robotNo = robotNos.get(0); if (!robotFloorAreaJsonMap.get(robotNo).contains(positionMapItem.getPositionMapId())) { - log.info("车辆不能在此停车点 :{}, 车辆编号 :{}",positionMapItem.getSortNum(), robotNo); + log.info("车辆不能在此停车点 :{}, 车辆编号 :{}", positionMapItem.getSortNum(), robotNo); continue; } positionMapItem.setRobotNo(robotNo); @@ -332,7 +333,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { log.info("派车去停车点--任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); // commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST); - mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST,JSON.toJSONString(pathPlanningList)); + mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST, JSON.toJSONString(pathPlanningList)); } @@ -395,7 +396,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { log.info("充电任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); // commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST); - mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST,JSON.toJSONString(pathPlanningList)); + mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST, JSON.toJSONString(pathPlanningList)); } @Transactional(rollbackFor = Exception.class) @@ -487,7 +488,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { if (ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) { robotNoLimitions = robotNoLimitationArea; } else { - log.info("区域 :{}",JSON.toJSONString(robotDoReleaseMap)); + log.info("区域 :{}", JSON.toJSONString(robotDoReleaseMap)); TaskRobotNoLimittationAreaDTO taskRobotNoLimittationAreaDTO = robotDoReleaseMap.get(taskDetailDO.getRobotNo()); if (ObjectUtil.isEmpty(taskRobotNoLimittationAreaDTO)) { log.info("车辆没有能行走的区域 :{}", taskDetailDO.getRobotNo()); @@ -510,6 +511,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { pathPlanning.setTakePointId(String.valueOf(fromLocation.getMapItemId())); pathPlanningSetTakeHeight(pathPlanning, fromLocation); + pathPlanningSetTakeForksHeight(pathPlanning, fromLocation); pathPlanning.setTakeLevel(fromLocation.getLocationStorey()); pathPlanning.setTakeOffsetHeight(znConfigConstant.getRobotConfig().getOffsetHeight()); if (ObjectUtil.isNotEmpty(taskDetailDO.getFromLaneId())) { @@ -542,10 +544,39 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { if (ObjectUtil.isNotEmpty(pathPlanningList)) { log.info("111111作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); // commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST); - mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST,JSON.toJSONString(pathPlanningList)); + mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST, JSON.toJSONString(pathPlanningList)); } } + private void pathPlanningSetTakeForksHeight(TaskToPathPlanningDTO pathPlanning, WareHouseLocationDO fromLocation) { + if (ZeroOneEnum.ONE.getType().equals(fromLocation.getLocationStorey())) { + pathPlanning.setDetectHeight(0.03); + return; + } + + WareHouseLocationDO nextLocation = locationMapper.selectOne(new LambdaQueryWrapperX() + .eq(WareHouseLocationDO::getId, fromLocation.getMapItemId()) + .eq(WareHouseLocationDO::getLocationStorey, fromLocation.getLocationStorey() - 1) + .last("limit 1")); + if (ObjectUtil.isNotEmpty(nextLocation) && ObjectUtil.isNotEmpty(nextLocation.getLocationTotalHeight())) { + + BigDecimal d1 = new BigDecimal("0.12"); + BigDecimal d2 = nextLocation.getLocationTotalHeight(); + double detectHeight = d2.subtract(d1).doubleValue(); + pathPlanning.setDetectHeight(detectHeight); + return; + } + + Integer locationStorey = fromLocation.getLocationStorey() - 1; + double height = locationStorey * znConfigConstant.getRobotConfig().getDefaultTrayHeight(); + BigDecimal d1 = new BigDecimal("0.12"); + BigDecimal d2 = new BigDecimal(height + ""); + double detectHeight = d2.subtract(d1).doubleValue(); + log.info("设置取货默认抬叉高度 :{}", detectHeight); + pathPlanning.setDetectHeight(detectHeight); + } + + /** * 设置放货高度 * @@ -738,16 +769,16 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { } //取货线库 - Map fromLaneMap = getFromLaneMap(detailDOS); + Map fromLaneMap = getFromLaneMap(detailDOS); //放货线库 - Map toLaneMap = getToLaneMap(detailDOS); + Map toLaneMap = getToLaneMap(detailDOS); //取货点位--最小 - Map fromLocationMap = getFromLocationMap(detailDOS); + Map fromLocationMap = getFromLocationMap(detailDOS); //放货点位--最大 - Map toLocationMap =getToLocationMap(detailDOS); + Map toLocationMap = getToLocationMap(detailDOS); //返回的数据 List list = new ArrayList<>(); @@ -792,8 +823,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { return new HashMap<>(); } return collect.stream().collect(Collectors.groupingBy(RobotTaskDetailDO::getToMapItemId, - Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparingLong(RobotTaskDetailDO::getToLocationNumber)), - a -> a.isPresent() ? a.get().getToLocationNumber() : null))); + Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparingLong(RobotTaskDetailDO::getToLocationNumber)), + a -> a.isPresent() ? a.get().getToLocationNumber() : null))); } private Map getFromLocationMap(List detailDOS) { @@ -804,8 +835,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { return new HashMap<>(); } return collect.stream().collect(Collectors.groupingBy(RobotTaskDetailDO::getFromMapItemId, - Collectors.collectingAndThen(Collectors.minBy(Comparator.comparingLong(RobotTaskDetailDO::getFromLocationNumber)), - a -> a.isPresent() ? a.get().getFromLocationNumber() : null))); + Collectors.collectingAndThen(Collectors.minBy(Comparator.comparingLong(RobotTaskDetailDO::getFromLocationNumber)), + a -> a.isPresent() ? a.get().getFromLocationNumber() : null))); } private Map getToLaneMap(List detailDOS) { @@ -817,7 +848,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { return new HashMap<>(); } return collect.stream().collect(Collectors.groupingBy(RobotTaskDetailDO::getToLaneId, - Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparingLong(RobotTaskDetailDO::getToLocationNumber)), Optional::get))); + Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparingLong(RobotTaskDetailDO::getToLocationNumber)), Optional::get))); } private Map getFromLaneMap(List detailDOS) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/log/RobotTaskTimeConsumingMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/log/RobotTaskTimeConsumingMapper.xml index 7fba8c196..a5def0bbf 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/log/RobotTaskTimeConsumingMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/log/RobotTaskTimeConsumingMapper.xml @@ -57,9 +57,6 @@ deleted = #{deleted}, - - tenant_id = #{tenantId}, - robot_no = #{robotNo},