| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R agvCallback(AgvCallbackDto param) { |
| | | log.debug("agvCallback param:{}", param); |
| | | log.debug("agv回调 param:{}", param); |
| | | // 优先使用taskId,如果没有则使用id(向后兼容) |
| | | String taskId = Cools.isEmpty(param.getTaskId()) ? param.getId() : param.getTaskId(); |
| | | if (Cools.isEmpty(taskId)) { |
| | |
| | | // 根据taskId查询任务 |
| | | Task task = null; |
| | | try { |
| | | // 处理"T"前缀格式(如"T130"),这是AGV任务创建时的格式 |
| | | String numericId = taskId; |
| | | if (taskId.startsWith("T") && taskId.length() > 1) { |
| | | numericId = taskId.substring(1); |
| | | log.debug("检测到T前缀格式的taskId,提取数字ID:{}", numericId); |
| | | } |
| | | // 尝试将taskId解析为Long类型的id |
| | | Long taskIdLong = Long.parseLong(taskId); |
| | | Long taskIdLong = Long.parseLong(numericId); |
| | | task = taskService.selectById(taskIdLong); |
| | | } catch (NumberFormatException e) { |
| | | // 如果不是数字,尝试通过其他字段查询(如sheetNo等) |
| | |
| | | String kind = param.getKind(); |
| | | if ("货物转运".equals(kind)) { |
| | | log.info("处理货物转运任务,taskId:{}", taskId); |
| | | } else if ("实托入库".equals(kind)) { |
| | | log.info("处理实托入库任务,taskId:{}", taskId); |
| | | } else if ("实托入库".equals(kind) || "空托入库".equals(kind)) { |
| | | log.info("处理入库任务,taskId:{}", taskId); |
| | | // 入库任务:如果收到确认取货回调(loaded=true),完结AGV呼叫单 |
| | | if (Boolean.TRUE.equals(param.getLoaded())) { |
| | | // 如果任务状态是8(已呼叫AGV),更新为9(任务完成) |
| | | if (task.getWrkSts() != null && task.getWrkSts() == 8L) { |
| | | task.setWrkSts(9L); |
| | | log.info("入库任务收到确认取货回调,完结AGV呼叫单,taskId:{}", taskId); |
| | | } |
| | | } |
| | | } else if ("实托出库".equals(kind)) { |
| | | log.info("处理实托出库任务,taskId:{}", taskId); |
| | | } |