自动化立体仓库 - WMS系统
chen.llin
16 小时以前 7692db6072ef569b5734d218cb11fa82e80171d1
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -823,8 +823,9 @@
            return;
        }
        
        // 检查工作档是否已完成或已转历史档
        // 检查工作档是否已完成或已转历史档,并获取工作档的目标站作为AGV的源库位
        boolean workCompleted = false;
        String wrkMastStaNo = null; // 工作档的目标站,将作为AGV的源库位
        if (outTask.getWrkNo() != null) {
            // 检查工作档是否存在且已完成
            WrkMast wrkMast = wrkMastService.selectOne(
@@ -836,7 +837,9 @@
                // 出库任务完成状态:14(已出库未确认)或15(出库更新完成)
                if (wrkSts != null && (wrkSts == 14L || wrkSts == 15L)) {
                    workCompleted = true;
                    log.debug("工作档{}已完成,状态:{}", outTask.getWrkNo(), wrkSts);
                    // 获取工作档的目标站作为AGV的源库位
                    wrkMastStaNo = wrkMast.getStaNo();
                    log.debug("工作档{}已完成,状态:{},目标站:{}", outTask.getWrkNo(), wrkSts, wrkMastStaNo);
                }
            } else {
                // 如果工作档不存在,检查历史档
@@ -848,7 +851,9 @@
                    // 出库任务历史档完成状态:15(出库更新完成)
                    if (logWrkSts == 15L) {
                        workCompleted = true;
                        log.debug("工作档{}已转历史档并完结,历史档状态:{}", outTask.getWrkNo(), logWrkSts);
                        // 从历史档获取目标站作为AGV的源库位
                        wrkMastStaNo = wrkMastLog.getStaNo() != null ? String.valueOf(wrkMastLog.getStaNo()) : null;
                        log.debug("工作档{}已转历史档并完结,历史档状态:{},目标站:{}", outTask.getWrkNo(), logWrkSts, wrkMastStaNo);
                    }
                }
            }
@@ -891,6 +896,8 @@
        // 创建空托出库/满托出库任务
        Task cacheTask = new Task();
        Date now = new Date();
        // 出库工作档完成时,工作档的目标站就是AGV的源库位
        // AGV的目标站是asr_loc_cache里面WA开头的库位
        cacheTask.setWrkNo(workNo)
                .setIoTime(now)
                .setWrkSts(7L) // 工作状态:7.待呼叫AGV
@@ -903,8 +910,8 @@
                .setFullPlt(isEmptyPallet ? "N" : "Y") // 满板:空托=N,满托=Y
                .setPicking("N")
                .setExitMk("N")
                .setSourceLocNo(null) // 出库任务不需要源库位
                .setLocNo(cacheLoc.getLocNo()) // 目标库位(缓存库位)
                .setSourceLocNo(wrkMastStaNo) // AGV的源库位:出库工作档的目标站
                .setLocNo(cacheLoc.getLocNo()) // AGV的目标库位:asr_loc_cache里面WA开头的库位
                .setEmptyMk(isEmptyPallet ? "Y" : "N") // 空板标记
                .setBarcode(outTask.getBarcode()) // 托盘码
                .setLinkMis("N")
@@ -927,8 +934,8 @@
            return;
        }
        
        log.info("成功生成{}任务,任务ID:{},工作号:{},源站点:{},目标站点:{},缓存库位:{}",
                isEmptyPallet ? "空托出库" : "满托出库", cacheTask.getId(), workNo, outboundStaNo, cacheStaNo, cacheLoc.getLocNo());
        log.info("成功生成{}任务,任务ID:{},工作号:{},源站点:{},目标站点:{},源库位(工作档目标站):{},目标库位(WA缓存库位):{}",
                isEmptyPallet ? "空托出库" : "满托出库", cacheTask.getId(), workNo, outboundStaNo, cacheStaNo, wrkMastStaNo, cacheLoc.getLocNo());
    }
    
    /**