package com.kingtom.shengtai.app.srm.service;

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

import com.kingtom.kirin.core.common.base.service.IBaseService;
import com.kingtom.shengtai.app.srm.model.ProductDir;
import com.mybatisflex.core.paginate.Page;

/**
 * 应用模块名称</p>
 * 产品目录表 服务层。</p>
 * Copyright: Copyright (C) 2024 , Inc. All rights reserved. <p>
 * Company: 成都诚唐科技有限责任公司</p>
 *
 * @author wany
 * @since 2024 /01/17
 */
public interface IProductDirService extends IBaseService<ProductDir>{

    /**
     * 新建 产品目录表.
     *
     * @param productDir the productDir
     * @return the productDir
     */
    ProductDir create(ProductDir productDir);

    /**
     * 根据Id更新 产品目录表.
     *
     * @param productDir the productDir
     * @return the productDir
     */
    ProductDir update(ProductDir productDir);

    /**
     * 根据id删除 产品目录表.
     *
     * @param id the id
     */
    void deleteById(String id);

    /**
     * 根据id批量删除 产品目录表
     *
     * @param ids the ids
     */
    void deleteByIds(List<String> ids);

    /**
     * 根据id查询 产品目录表.
     *
     * @param id the id
     * @return the product dir
     */
    ProductDir findById(String id);

    /**
     * 根据id集合查询 产品目录表
     *
     * @param ids the ids
     * @return the list
     */
    List<ProductDir> findByIds(List<String> ids);

    /**
     * 根据name查询 产品目录表
     *
     * @param name the name
     * @return product dir
     */
    ProductDir findByName(String name);

    /**
     * 根据code查询 产品目录表
     *
     * @param code the code
     * @return product dir
     */
    ProductDir findByCode(String code);

    /**
     * Find child list.
     *
     * @param id the id
     * @return the list
     */
    List<ProductDir> findChild(String id);

    /**
     * 分页查询 产品目录表
     *
     * @param search   the search
     * @param pageNum  the page num
     * @param pageSize the page size
     * @return the page
     */
    Page<ProductDir> page(String search, int pageNum, int pageSize);

    /**
     * 分组查询每个产品有多少个供应商可以提供
     *
     * @param filterCount0 是否过滤总数为零的餐品
     * @return map list
     */
    List<Map<String, Object>> findSupplierCountGroupByProduct(boolean filterCount0);


}
