package cn.iocoder.yudao.module.inspection.service;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.iocoder.yudao.module.inspection.entity.ShopInspectionCategory;
import cn.iocoder.yudao.module.inspection.entity.ShopInspectionGoods;

/**
 * 检测商品Service接口
 *
 * @author ruoyi
 * @date 2023-07-08
 */
public interface IShopInspectionGoodsService extends IService<ShopInspectionGoods>
{
    /**
     * 查询检测商品
     *
     * @param id 检测商品主键
     * @return 检测商品
     */
    public ShopInspectionGoods getByIdSystem(Long id);

    /**
     * 查询检测商品
     *
     * @param id 检测商品主键
     * @return 检测商品
     */
    public ShopInspectionGoods selectShopInspectionGoodsById(Long id);

    /**
     * 查询检测商品列表
     *
     * @param shopInspectionGoods 检测商品
     * @return 检测商品集合
     */
    public IPage<ShopInspectionGoods> selectShopInspectionGoodsListWx(Page<ShopInspectionGoods> page, ShopInspectionGoods shopInspectionGoods);

    /**
     * 新增检测商品
     *
     * @param shopInspectionGoods 检测商品
     * @return 结果
     */
    public int insertShopInspectionGoods(ShopInspectionGoods shopInspectionGoods);

    /**
     * 修改检测商品
     *
     * @param shopInspectionGoods 检测商品
     * @return 结果
     */
    public int updateShopInspectionGoods(ShopInspectionGoods shopInspectionGoods);
    public int examine(ShopInspectionGoods shopInspectionGoods);


    /**
     * 批量删除检测商品
     *
     * @param ids 需要删除的检测商品主键集合
     * @return 结果
     */
    public int deleteShopInspectionGoodsByIds(Long[] ids);

    /**
     * 删除检测商品信息
     *
     * @param id 检测商品主键
     * @return 结果
     */
    public int deleteShopInspectionGoodsById(Long id);

    /**
     * pc端查询检测商品列表
     * @param shopInspectionGoods 检测商品
     * @return 检测商品集合
     */
    public IPage<ShopInspectionGoods> listSystem(Page<ShopInspectionGoods> page,ShopInspectionGoods shopInspectionGoods);

    public IPage<ShopInspectionGoods> listPartnerGoods(Page<ShopInspectionGoods> page,ShopInspectionGoods shopInspectionGoods) throws Exception;
    List<ShopInspectionCategory> categoryList() throws Exception;
    void partnerAddGoods(ShopInspectionGoods shopInspectionGoods) throws Exception;
    List<ShopInspectionGoods> partnerGoodsListTree(Long partnerId);
    JSONObject partnerGoodsListCol(Long partnerId);


}
