package cn.cslg.pas.mapper.asso;

import cn.cslg.pas.common.model.dto.AssoStructurePatentQueryDTO;
import cn.cslg.pas.common.model.vo.AssoStructurePatentVO;
import cn.cslg.pas.domain.asso.AssoStructurePatent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 架构和专利关联表的Mapper层接口
 *
 * @Author chenyu
 * @Date 2023/3/13
 */
@Repository
public interface AssoStructurePatentMapper extends BaseMapper<AssoStructurePatent> {
    /**
     * 插入标引数据
     *
     * @param assoStructurePatent 数据对象
     * @return 返回受影响的行数
     */
    int insert(AssoStructurePatent assoStructurePatent);

    /**
     * 删除标引数据
     *
     * @param assoStructurePatent 数据对象
     * @return 返回受影响的行数
     */
    int delete(AssoStructurePatent assoStructurePatent);

    /**
     * 根据产品id统计数量
     *
     * @param productId 产品id
     * @return 返回统计到的数量
     */
    int countByProductId(Integer productId);

    /**
     * 根据架构ids统计数量
     *
     * @param structureIds 架构ids
     * @return 返回统计到的数量
     */
    int countByStructureIds(List<Integer> structureIds);

    /**
     * 根据专题库id统计数量
     *
     * @param projectId 专题库id
     * @return 返回统计到的数量
     */
    int countByProjectId(Integer projectId);

    /**
     * 根据专题库id和专利号查询数据
     *
     * @param assoStructurePatentQueryDTO 专题库产品架构专利号标引的查询DTO类
     * @return 返回查询到的数据
     */
    List<AssoStructurePatentVO> selectByProjectIdPatentNo(AssoStructurePatentQueryDTO assoStructurePatentQueryDTO);

    /**
     * 根据架构id批量删除数据
     *
     * @param structureIds 架构ids
     * @return 返回受影响的行数
     */
    int deleteByStructureIds(List<Integer> structureIds);

    /**
     * 根据专题库id删除数据
     *
     * @param projectId 专题库id
     * @return 返回受影响的行数
     */
    int deleteByProjectId(Integer projectId);


}
