package com.yiqi.core.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.common.core.page.TableDataInfo;
import com.yiqi.core.domain.ClothItem;
import com.yiqi.core.domain.ClothPrice;
import com.yiqi.core.domain.dto.ClothPriceImportDTO;
import com.yiqi.core.domain.dto.ClothPriceQueryByClothTypeDTO;
import com.yiqi.core.domain.dto.ClothPriceQueryByWashModeDTO;
import com.yiqi.core.domain.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 衣服价格Service接口
 *
 * @author xiaohei
 * @date 2023-08-22
 */
public interface IClothPriceService extends IService<ClothPrice> {

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

    /**
     * 列表查询 衣服类型维度 -价格设置
     * @param clothPriceQueryByClothTypeDTO
     * @return
     */
    TableDataInfo getClothPriceListByClothTypeV2(ClothPriceQueryByClothTypeDTO clothPriceQueryByClothTypeDTO);


    /**
     * 列表查询 洗衣方式维度 -价格设置
     * @param clothPriceQueryByWashModeDTO
     * @return
     */
    TableDataInfo getClothPriceListByWashModeV2(ClothPriceQueryByWashModeDTO clothPriceQueryByWashModeDTO);

    /**
     * 计算数量 衣服类型维度 -价格设置-
     *
     * @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);

    public String importData(List<ClothPriceImportVO> priceImportVOS, ClothPriceImportDTO clothPriceImportDTO);

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


    /**
     * 查询价格 根据洗衣类型和模式
     *
     * @param priceType   0根据洗衣方式，1根据衣服类型
     * @param clothId     衣服
     * @param storeAreaId 业务区域编号
     * @param washModeId  洗衣方式  （干洗，精洗。。。）
     * @param clothType   衣服类型 （儿童，真丝，羊绒，加厚）
     * @return
     */
    ClothPrice selectClothPriceByClothIdAndWashModeId(Integer priceType, Long clothId, Long storeAreaId, Long washModeId, Integer clothType);

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

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

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

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

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

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


}
