自动化立体仓库 - WMS系统
chen.llin
2 天以前 0f1afa9e4e9d72659fd16c3c1bdb9e7a827602d7
src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -480,12 +480,31 @@
            return errorMsg;
        }
        
        // 获取没有出库任务的站点
        List<Integer> canInSites = basDevpMapper.getCanInSites(sites);
        // 先检查站点配置(canining="Y"可入),排除dev_no=0的无效站点
        List<BasDevp> devListWithConfig = basDevpMapper.selectList(new EntityWrapper<BasDevp>()
                .in("dev_no", sites)
                .eq("in_enable", "Y")
                .eq("canining", "Y")
                .ne("dev_no", 0) // 排除dev_no=0的无效站点
        ).stream()
                .filter(dev -> dev.getDevNo() != null && dev.getDevNo() != 0) // 再次过滤,确保不为null或0
                .collect(Collectors.toList());
        if (devListWithConfig.isEmpty()) {
            // 站点配置不允许入库(canining != "Y"),暂不分配,等待配置开通(只在定时任务中记录日志)
            log.warn("任务ID:{}没有可入站点(站点未开通可入允许:canining='Y'),暂不分配站点,等待配置开通", task.getId());
            return null; // 返回null,表示暂不分配,等待配置开通
        }
        // 获取没有出库任务的站点(从已配置可入的站点中筛选)
        List<Integer> configuredSites = devListWithConfig.stream()
                .map(BasDevp::getDevNo)
                .collect(Collectors.toList());
        List<Integer> canInSites = basDevpMapper.getCanInSites(configuredSites);
        if (canInSites.isEmpty()) {
            String errorMsg = "请等待出库完成";
            log.warn("任务ID:{}没有可入站点({})", task.getId(), errorMsg);
            return errorMsg;
            // 所有已配置可入的站点都有出库任务,暂不分配,等待下次定时任务再尝试(只在定时任务中记录日志)
            log.warn("任务ID:{}没有可入站点(请等待出库完成),暂不分配站点,等待下次定时任务再尝试", task.getId());
            return null; // 返回null,表示暂不分配,等待下次定时任务再尝试
        }
        
        // 寻找入库任务最少的站点(且必须in_enable="Y"能入 和 canining="Y"可入),排除dev_no=0的无效站点
@@ -499,6 +518,7 @@
                .collect(Collectors.toList());
        
        if (devList.isEmpty()) {
            // 理论上不应该到这里,因为前面已经检查过了,但为了安全起见还是保留
            String errorMsg = "没有可入站点(in_enable='Y'且canining='Y')";
            log.warn("任务ID:{}", errorMsg, task.getId());
            return errorMsg;