自动化立体仓库 - WMS系统
chen.llin
5 天以前 74951023b54f1789d1244fe923219d467487d771
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -73,59 +73,21 @@
            return R.error("任务id不能为空");
        }
        
        log.info("收到AGV任务回调请求,taskId:{},fromBin:{},toBin:{},robotGroup:{},kind:{}",
            taskId, param.getFromBin(), param.getToBin(),
            Cools.isEmpty(param.getRobotGroup()) ? param.getRobotName() : param.getRobotGroup(),
        log.info("收到AGV任务回调请求,taskId:{},fromBin:{},toBin:{},robotGroup:{},kind:{}",
            taskId, param.getFromBin(), param.getToBin(),
            Cools.isEmpty(param.getRobotGroup()) ? param.getRobotName() : param.getRobotGroup(),
            param.getKind());
        
        // 根据taskId查询任务
        // taskId格式:T + 工作号(如"T5299")或 T + 任务ID(向后兼容)
        Task task = null;
        try {
            // 处理"T"前缀格式(如"T5299"或"T130")
            String numericId = taskId;
            if (taskId.startsWith("T") && taskId.length() > 1) {
                numericId = taskId.substring(1);
                    log.debug("检测到T前缀格式的taskId,提取数字:{}", numericId);
            }
            // 先尝试通过工作号(wrk_no)查询(优先,因为现在使用工作号作为taskId)
            try {
                Integer wrkNo = Integer.parseInt(numericId);
                task = taskService.selectOne(
                    new EntityWrapper<Task>().eq("wrk_no", wrkNo).eq("is_deleted", 0)
                );
                if (task != null) {
                    log.debug("通过工作号(wrk_no={})找到任务,taskId:{}", wrkNo, task.getId());
                }
            } catch (NumberFormatException e) {
                log.debug("无法解析为工作号,taskId:{}", taskId);
            }
            // 如果通过工作号没找到,尝试通过任务ID查询(向后兼容)
            if (task == null) {
                try {
                    Long taskIdLong = Long.parseLong(numericId);
                    task = taskService.selectById(taskIdLong);
                    if (task != null) {
                        log.debug("通过任务ID(id={})找到任务,taskId:{}", taskIdLong, taskId);
                    }
                } catch (NumberFormatException e) {
                    log.debug("无法解析为任务ID,taskId:{}", taskId);
                }
            }
        } catch (Exception e) {
            log.debug("解析taskId异常,taskId:{},异常:{}", taskId, e.getMessage());
        // 优先通过agvWrkNo字段查询(新格式:T+wrk_no+年月日时分秒)
        task = taskService.selectOne(
            new EntityWrapper<Task>().eq("agv_wrk_no", taskId).eq("is_deleted", 0)
        );
        if (task != null) {
            log.debug("通过agvWrkNo(agv_wrk_no={})找到任务,taskId:{}", taskId, task.getId());
        }
        // 如果还是没找到,尝试通过其他字段查询(如sheetNo等,向后兼容)
        if (task == null) {
            log.debug("通过工作号和任务ID都没找到,尝试通过其他字段查询,taskId:{}", taskId);
            task = taskService.selectOne(
                new EntityWrapper<Task>().eq("sheet_no", taskId).eq("is_deleted", 0)
            );
        }
        if (task == null) {
            log.warn("未找到对应的任务,taskId:{}", taskId);
            return R.error("任务不存在,taskId:" + taskId);