package com.yiqi.core.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yiqi.core.domain.ClothItem;
import com.yiqi.core.domain.dto.ClothPriceQueryByClothTypeDTO;
import com.yiqi.core.domain.dto.ClothPriceQueryByWashModeDTO;
import com.yiqi.core.domain.vo.ClothPriceExportVO;
import com.yiqi.core.domain.vo.ClothPriceQueryByClothTypeVO;
import com.yiqi.core.domain.vo.ClothPriceQueryByWashModeVO;
import com.yiqi.core.domain.vo.ClothPriceSetVO;
import org.apache.ibatis.annotations.Mapper;
import com.yiqi.core.domain.ClothPrice;
import org.apache.ibatis.annotations.Param;

/**
 * 衣服价格Mapper接口
 *
 * @author xiaohei
 * @date 2023-08-22
 */
public interface ClothPriceMapper extends BaseMapper<ClothPrice> {

    /**
     *  列表查询 衣服类型维度 -价格设置-
     * @param clothPriceQueryByClothTypeDTO
     * @return
     */
    public List<ClothPriceQueryByClothTypeVO> getClothPriceListByClothType(ClothPriceQueryByClothTypeDTO clothPriceQueryByClothTypeDTO);

    /**
     * 计算数量 衣服类型维度 -价格设置-
     * @param clothPriceQueryByClothTypeDTO
     * @return
     */
    public int countClothPriceListByClothType(ClothPriceQueryByClothTypeDTO clothPriceQueryByClothTypeDTO);

    /**
     * 列表查询 洗衣方式维度 -价格设置
     * @param clothPriceQueryByWashModeDTO
     * @return
     */
    public List<ClothPriceQueryByWashModeVO> getClothPriceListByWashMode(ClothPriceQueryByWashModeDTO clothPriceQueryByWashModeDTO);

    /**
     * 计算数量 洗衣方式维度 -价格设置
     * @param clothPriceQueryByWashModeDTO
     * @return
     */
    public int countClothPriceListByWashMode(ClothPriceQueryByWashModeDTO clothPriceQueryByWashModeDTO);

    public List<ClothPriceExportVO> getClothPriceListByAreaIdExport(Long areaId);

    /**
     * 查询衣服价格
     *
     * @param id 衣服价格主键
     * @return 衣服价格
     */
    public ClothPrice selectClothPriceById(Long id);

    /**
     * 查询衣服价格列表
     *
     * @param clothPrice 衣服价格
     * @return 衣服价格集合
     */
    public List<ClothPrice> selectClothPriceList(ClothPrice clothPrice);


    /**
     * 根据业务区域ID查询衣服价格
     * @param storeAreaId
     * @return
     */
    public List<ClothPrice> selectClothPriceGroupByWashMode(@Param("storeAreaId") Long  storeAreaId);

    /**
     * 根据业务区域ID查询衣服价格
     * @param storeAreaId
     * @return
     */
    public List<ClothPrice> selectClothPriceGroupByClothType(@Param("storeAreaId") Long  storeAreaId);

    /**
     * 查询衣服价格列表
     *
     * @param clothItem 衣服价格
     * @return 衣服价格集合
     */
    public List<ClothPriceSetVO> selectClothPriceSetList(@Param("clothItem") ClothItem clothItem, @Param("storeAreaId") Long  storeAreaId);

    /**
     * 新增衣服价格
     *
     * @param clothPrice 衣服价格
     * @return 结果
     */
    public int insertClothPrice(ClothPrice clothPrice);

    /**
     * 修改衣服价格
     *
     * @param clothPrice 衣服价格
     * @return 结果
     */
    public int updateClothPrice(ClothPrice clothPrice);

    /**
     * 删除衣服价格
     *
     * @param id 衣服价格主键
     * @return 结果
     */
    public int deleteClothPriceById(Long id);

    /**
     * 批量删除衣服价格
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteClothPriceByIds(Long[] ids);

    /**
     * 根据衣服ID和洗衣方式ID查询衣服价格
     * @param priceType
     * @param clothId
     * @param storeAreaId
     * @param washModeId
     * @param clothType
     * @return
     */
    List<ClothPrice> selectClothPriceByClothIdAndWashModeId(@Param("priceType") Integer priceType, @Param("clothId") Long clothId, @Param("storeAreaId") Long storeAreaId, @Param("washModeId") Long washModeId, @Param("clothType") Integer clothType);

}
