package com.bonus.material.purchase.service;

import java.util.List;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.domain.dto.PurchaseCheckDto;
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
import com.bonus.material.purchase.domain.vo.PurchaseCheckFormVo;
import com.bonus.material.purchase.domain.vo.PurchaseVerifyVo;

/**
 * 新购验收任务Service接口
 * 
 * @author syruan
 */
public interface IPurchaseCheckInfoService {
    /**
     * 查询新购验收任务
     * 
     * @param purchaseQueryDto 新购验收请求条件封装dto
     * @return 新购验收任务
     */
    PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto);

    /**
     * 查询新购验收任务列表
     * 
     * @param purchaseQueryDto 新购验收任务
     * @return 新购验收任务集合
     */
    List<PurchaseCheckInfo> selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto);

    List<PurchaseCheckDetails> selectPurchaseCheckDetailsList(PurchaseCheckInfo purchaseCheckInfo);

    /**
     * 新增新购验收任务
     * 
     * @param purchaseCheckDto 新购验收任务dto
     * @return 结果
     */
    AjaxResult insertPurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto);

//    /**
//     * 验收通过
//     * @param taskId 新购验收任务id
//     */
//    AjaxResult acceptance(List<Long> taskId);

    AjaxResult outVerify(PurchaseVerifyVo purchaseVerifyVo);

    AjaxResult innerVerify(PurchaseVerifyVo purchaseVerifyVo);

    /**
     * 根据任务id查询验收单
     * @param taskId 任务id
     */
    PurchaseCheckFormVo selectPurchaseCheckFormVoByTaskId(Long taskId);

    /**
     * 修改新购验收任务
     * 
     * @param purchaseCheckDto 新购验收任务
     * @return 结果
     */
    boolean updatePurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto);

    /**
     * 批量删除新购验收任务
     * 
     * @param ids 需要删除的新购验收任务主键集合
     * @return 结果
     */
    int deletePurchaseCheckInfoByIds(Long[] ids);

    /**
     * 删除新购验收任务信息
     * 
     * @param id 新购验收任务主键
     * @return 结果
     */
    int deletePurchaseCheckInfoById(Long id);
}
