package com.fjhx.item.mapper.product;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjhx.item.entity.product.po.ProductInfo;
import com.fjhx.item.entity.product.vo.ProductInfoVo;
import com.ruoyi.common.utils.wrapper.IWrapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


/**
 * <p>
 * 产品库 Mapper 接口
 * </p>
 *
 * @author zlj
 * @since 2023-03-17
 */
public interface ProductInfoMapper extends BaseMapper<ProductInfo> {

    /**
     * 产品库分页
     */
    Page<ProductInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);

    /**
     * 根据产品IDS获取产品
     * @return
     */
    List<ProductInfoVo> getListByProductIds(@Param("productIds") List<Long> productIds);

    /**
     * 根据产品类型获取产品
     *
     * @return
     */
    List<ProductInfoVo> getListByProductType(@Param("productType") Integer productType,
                                             @Param("definition") Integer definition,
                                             @Param("productName") String productName,
                                             @Param("productCode") String productCode
    );

    /**
     * 产品类型排行（数据看板-产品分析页面）
     * @param query
     */
    List<ProductInfoVo>  productTypeRanking(@Param("ew") QueryWrapper<Object> query);

    /**
     * 产品排行（数据看板-产品分析页面）
     * @param query
     */
    Page<ProductInfoVo> productRanking(@Param("page") Page<Object> page,@Param("ew") QueryWrapper<Object> query);
    /**
     * 客户产品库
     */
    Page<ProductInfoVo> getCustomerProductList(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);

    /**
     * 产品统计
     * @return
     */
    Map<String,Object> statisticsProduct();
}
