package com.bonus.material.lease.service;

import java.util.List;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.lease.domain.LeaseApplyDetails;
import com.bonus.material.lease.domain.LeaseApplyInfo;
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
import com.bonus.material.lease.domain.vo.LeaseOutRequestVo;

/**
 * 领料任务Service接口
 * 
 * @author xsheng
 * @date 2024-10-16
 */
public interface ILeaseApplyInfoService {
    /**
     * 查询领料任务
     *
     * @param id 领料任务主键
     * @return 领料任务
     */
    LeaseApplyRequestVo selectLeaseApplyInfoById(Long id);

    /**
     * 查询领料任务列表
     * 
     * @param leaseApplyInfo 领料任务
     * @return 领料任务集合
     */
    List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo);

    /**
     * 新增领料任务
     * 
     * @param leaseApplyRequestVo 领料任务
     * @return 结果
     */
    AjaxResult insertLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo);

    /**
     * 发布任务
     */
    AjaxResult publish(LeaseApplyInfo leaseApplyInfo);

    /**
     * 修改领料任务
     * 
     * @param leaseApplyRequestVo 领料任务
     * @return 结果
     */
    boolean updateLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo);




    /**
     * 领料：出库
     *
     * @param leaseOutRequestVo 领料：出库
     * @return 结果
     */
    AjaxResult leaseOut(LeaseOutRequestVo leaseOutRequestVo);


    /**
     * 批量删除领料任务
     * 
     * @param ids 需要删除的领料任务主键集合
     * @return 结果
     */
    int deleteLeaseApplyInfoByIds(Long[] ids);

    /**
     * 删除领料任务信息
     * 
     * @param id 领料任务主键
     * @return 结果
     */
    int deleteLeaseApplyInfoById(Long id);
}
