package com.wms_main.service.business;

import com.wms_main.model.po.TAppAgvLock;

/**
 * 入库口互锁服务接口
 * 管理单一入库口的AGV上料互锁机制
 */
public interface IAgvLockService {
    
    /**
     * AGV就位并放货后，锁定入库口
     * @param agvId AGV设备ID
     * @param inboundPort 入库口编号
     * @return 锁定结果：成功返回锁定记录，失败返回null
     */
    TAppAgvLock lockInboundPort(String agvId, String inboundPort);

    /**
     * 检查入库口是否可以上料（MES系统调用）
     * @param inboundPort 入库口编号
     * @return 是否可以上料
     */
    boolean canFeedToInboundPort(String inboundPort);
    
    /**
     * 获取当前入库口处理中的任务数量
     * @param inboundPort 入库口编号
     * @return 处理中的任务数量
     */
    int getProcessingTaskCount(String inboundPort);
    
    /**
     * 获取入库口状态描述
     * @param inboundPort 入库口编号
     * @return 状态描述（空闲/占用）
     */
    String getInboundPortStatus(String inboundPort);
    
    /**
     * 清理超时锁定
     * @return 清理的记录数
     */
    int cleanTimeoutLocks();
    
    /**
     * 释放指定入库口的所有活动锁定
     * @param inboundPort 入库口编号
     * @return 释放的锁定数量
     */
    int releaseAllInboundPortLocks(String inboundPort);
}