package com.microservices.pms.project.service;

import com.microservices.common.core.web.page.GenericsTableDataInfo;
import com.microservices.pms.project.domain.PmsProjectTestsheetCases;
import com.microservices.pms.project.domain.vo.PmsProjectTestsheetCaseExecVo;
import com.microservices.pms.project.domain.vo.PmsProjectTestsheetCaseInputVo;
import com.microservices.pms.project.domain.vo.PmsProjectTestsheetCaseSearchVo;
import com.microservices.pms.project.domain.vo.PmsProjectTestsheetCaseVo;

import java.util.List;

/**
 * 测试单执行用例Service接口
 *
 * @author microservices
 * @date 2023-11-24
 */
public interface IPmsProjectTestsheetCasesService 
{
    /**
     * 查询测试单执行用例
     * 
     * @param id 测试单执行用例主键
     * @return 测试单执行用例
     */
    public PmsProjectTestsheetCases selectPmsProjectTestsheetCasesById(Long id);

    public PmsProjectTestsheetCaseVo selectPmsProjectTestsheetCasesVoById(Long id);

    /**
     * 查询测试单执行用例列表
     * 
     * @param pmsProjectTestsheetCases 测试单执行用例
     * @return 测试单执行用例集合
     */
    public List<PmsProjectTestsheetCases> selectPmsProjectTestsheetCasesList(PmsProjectTestsheetCases pmsProjectTestsheetCases);

    /**
     * 查询测试单执行用例列表数量
     *
     * @param pmsProjectTestsheetCases
     * @return
     */
    public Integer selectPmsProjectTestsheetCasesCount(PmsProjectTestsheetCases pmsProjectTestsheetCases);

    /**
     * 查询无目录下用例关联测试单数量
     * @param projectTestsheetId
     * @return
     */
    public Integer selectPmsProjectTestcaseByRootModuleForTestsheetCount(Long projectTestsheetId);


    /**
     * 查询测试单执行用例VO列表
     *
     * @param searchVo 测试单执行用例
     * @return 测试单执行用例集合
     */
    public GenericsTableDataInfo<PmsProjectTestsheetCaseVo> selectPmsProjectTestsheetCasesList(PmsProjectTestsheetCaseSearchVo searchVo);

    /**
     * 新增测试单执行用例
     * 
     * @param addCaseVo 测试单执行用例
     * @return 结果
     */
    public int insertPmsProjectTestsheetCases(PmsProjectTestsheetCaseInputVo addCaseVo);

    /**
     * 修改测试单执行用例
     * 
     * @param testsheetCaseExecVo 测试单执行用例
     * @return 结果
     */
    public int updatePmsProjectTestsheetCases(PmsProjectTestsheetCaseExecVo testsheetCaseExecVo);

    public int updatePmsProjectTestsheetCasesUpdateById(Long id);

    /**
     * 批量删除测试单执行用例
     * 
     * @param ids 需要删除的测试单执行用例主键集合
     * @return 结果
     */
    public int deletePmsProjectTestsheetCasesByIds(Long[] ids);

}
