package com.ruoyi.asset.service;

import java.util.List;
import com.ruoyi.asset.domain.AmsAsset;
import com.ruoyi.asset.domain.AmsInboundOrder;

/**
 * 入库管理Service接口
 * 
 * @author Yangk
 * @date 2026-06-10
 */
public interface IAmsInboundOrderService 
{
    /**
     * 查询入库管理
     * 
     * @param orderId 入库管理主键
     * @return 入库管理
     */
    public AmsInboundOrder selectAmsInboundOrderByOrderId(Long orderId);

    /**
     * 查询入库管理列表
     * 
     * @param amsInboundOrder 入库管理
     * @return 入库管理集合
     */
    public List<AmsInboundOrder> selectAmsInboundOrderList(AmsInboundOrder amsInboundOrder);

    /**
     * 分页查询当前可加入入库草稿的待入库资产
     * <p>只返回状态为 PENDING_INBOUND 且未被其他草稿入库单占用的资产，
     * 供入库单新增/编辑页的资产弹窗选择器使用。</p>
     *
     * @param amsAsset 查询条件（编码、名称、类别等模糊搜索）
     * @param currentOrderId 当前编辑入库单ID，新增时为空，编辑时传入以排除自身占用
     * @return 可入库资产集合
     */
    public List<AmsAsset> selectAvailableInboundAssetList(AmsAsset amsAsset, Long currentOrderId);

    /**
     * 新增入库管理
     * 
     * @param amsInboundOrder 入库管理
     * @return 结果
     */
    public int insertAmsInboundOrder(AmsInboundOrder amsInboundOrder);

    /**
     * 修改入库管理
     * 
     * @param amsInboundOrder 入库管理
     * @return 结果
     */
    public int updateAmsInboundOrder(AmsInboundOrder amsInboundOrder);

    /**
     * 确认入库
     *
     * @param orderId 入库单ID
     * @param operateUserId 操作用户ID
     * @param operateUserName 操作用户名称
     * @param operateLoginName 操作登录账号
     * @return 结果
     */
    public int confirmInbound(Long orderId, Long operateUserId, String operateUserName, String operateLoginName);

    /**
     * 批量删除入库管理
     * 
     * @param orderIds 需要删除的入库管理主键集合
     * @return 结果
     */
    public int deleteAmsInboundOrderByOrderIds(String orderIds);

    /**
     * 删除入库管理信息
     * 
     * @param orderId 入库管理主键
     * @return 结果
     */
    public int deleteAmsInboundOrderByOrderId(Long orderId);
}
