package com.microservices.pms.product.service;

import com.microservices.common.core.web.page.GenericsTableDataInfo;
import com.microservices.pms.product.domain.PmsProductRequirementTag;

import java.util.List;

/**
 * 产品需求标记Service接口
 * 
 * @author otto
 * @date 2023-10-10
 */
public interface IPmsProductRequirementTagService 
{
    /**
     * 查询产品需求标记
     * 
     * @param id 产品需求标记主键
     * @return 产品需求标记
     */
    public PmsProductRequirementTag selectPmsProductRequirementTagById(Long id);

    /**
     * 查询产品需求标记列表
     *
     * @param enterpriseIdentifier
     * @param pmsProductRequirementTag 产品需求标记
     * @param type
     * @return 产品需求标记集合
     */
    public GenericsTableDataInfo<PmsProductRequirementTag> selectPmsProductRequirementTagList(String enterpriseIdentifier, PmsProductRequirementTag pmsProductRequirementTag, int type);

    /**
     * 新增产品需求标记
     *
     * @param pmsProductRequirementTag 产品需求标记
     * @param type
     * @return 结果
     */
    public int insertPmsProductRequirementTag(PmsProductRequirementTag pmsProductRequirementTag, int type);

    /**
     * 修改产品需求标记
     *
     * @param pmsProductRequirementTag 产品需求标记
     * @return 结果
     */
    public int updatePmsProductRequirementTag(PmsProductRequirementTag pmsProductRequirementTag);

    /**
     * 批量删除产品需求标记
     * 
     * @param ids 需要删除的产品需求标记主键集合
     * @return 结果
     */
    public int deletePmsProductRequirementTagByIds(Long[] ids);

    /**
     * 删除产品需求标记信息
     * 
     * @param id 产品需求标记主键
     * @return 结果
     */
    public int deletePmsProductRequirementTagById(Long id);

    /**
     * 初始化产品下默认标记
     *
     * @param pmsEnterpriseId 企业Id
     */
    void insertDefaultPmsProductRequirementTag(Long pmsEnterpriseId);

    /**
     * 检查标记是否正确
     *
     * @param tags     标记Id列表，逗号分隔
     * @param type     标记类型（1产品需求标记 2测试用例标记）
     * @param pmsEnterpriseId 企业Id
     */
    void checkTags(String tags, Integer type, Long pmsEnterpriseId);

    /**
     * 查询标记列表
     *
     * @param tagIds 标记Id列表
     * @return 标记列表
     */
    List<PmsProductRequirementTag> selectTagListByIds(String tagIds);
}
