package com.hzs.scm.product.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.product.BdProductBas;
import com.hzs.common.domain.sale.product.BdProductSpecs;
import com.hzs.common.domain.sale.product.ext.BdProductBasExt;
import com.hzs.scm.product.param.ProductBasParams;
import com.hzs.scm.product.vo.ProductBasVo;
import com.hzs.scm.product.vo.ProductInfoVo;
import com.hzs.system.sys.dto.LoginUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 产品基本设置 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-11-21
 */
public interface IBdProductBasService extends IService<BdProductBas> {

    /**
     * 根据id查询
     * @param productBasId
     * @return
     */
    BdProductBas getProductBasById(Integer productBasId);
    /**
     * 根据产品编号 查询
     * @return
     */
    BdProductBas getProductBasByProductCode(String productCode);

    /*
     * @description: 查询产品id，顺道查询出国家对应的产品id
     * @author: sui q
     * @date: 2023/11/24 11:41
     * @param: null null
     **/
    List<BdProductBasExt> queryProductBasByIds(Set<Integer> idList, Integer pkCountry);

    /**
     * 新增
     * @param productBasParams
     * @return
     */
    String saveProductBas(ProductBasParams productBasParams, LoginUser loginUser);

    /**
     * 修改
     * @param productBasParams
     * @param loginUser
     */
    void updateProductBas(ProductBasParams productBasParams, LoginUser loginUser);

    /**
     * 删除
     * @param productBasId
     */
    void removeProductBas(Integer productBasId);

    /**
     * 根据产品编号查询信息
     * @param productCode
     */
    ProductInfoVo getByProductCodeInfo(String productCode, Integer pkCountry);

    /**
     * 查询列表
     * @param query
     * @return
     */
    List<ProductBasVo> queryProductBasList(String query, Integer pkCountry,Integer pkCubasdoc);

    /**
     * 根据产品编号查询
     * @param productCode
     * @return
     */
    List<ProductBasVo> findByProductCode(String productCode, Integer pkCountry);

    /*
     * @description: 根据规格、主键查询产品
     * @author: sui q
     * @date: 2023/11/27 15:52
     * @param: null null
     **/
    List<BdProductBasExt> queryProductExtBySpecsId(List<BdProductSpecs> productSpecsList, Integer pkCountry);

    /**
     * 查询全部已关联查询
     * @param query
     * @return
     */
    List<ProductBasVo> queryProductBasRelevanceList(String query,Integer pkCountry);

    /**
     * 根据供应商查询产品基本信息
     * @param pkSupplier
     * @return
     */
    List<BdProductBas> selectbypkSupplierList(Integer pkSupplier);

    /**
     * 查询无供应商的产品基本信息
     * @return
     */
    List<BdProductBas> selectbyNotSupplierList(String query);

    /**
     * 查询数据
     * @param query
     * @param pkCountry
     * @return
     */
    List<ProductBasVo> queryProductBasAllList(String query, Integer pkCountry);
}
