package cn.estsh.i3plus.ext.mes.api.base.bu3;

import cn.estsh.i3plus.ext.mes.pojo.bean.MesPartCategoryPlanRate;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;

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

/**
 * @Author: wangjie
 * @CreateDate: 2021/01/19 15:06 下午
 * @Description:
 **/
public interface ISxPartCategoryPlanRateService {

    /**
     * 按条件分页查询产品类别计划比例信息
     *
     * @param partCategoryPlanRate 查询条件
     * @param pager 分页条件
     * @return 产品类别计划比例分页数据
     */
    @ApiOperation(value = "按条件分页查询产品类别计划比例信息", notes = "按条件分页查询产品类别计划比例信息")
    ListPager<MesPartCategoryPlanRate> queryPartCategoryPlanRateByPager(MesPartCategoryPlanRate partCategoryPlanRate, Pager pager);

    /**
     * 按条件查询产品类别计划比例信息
     * @param partCategoryPlanRate 查询条件
     * @return 产品类别计划比例信息
     */
    @ApiOperation(value = "按条件查询产品类别计划比例信息", notes = "按条件查询产品类别计划比例信息")
    List<MesPartCategoryPlanRate> queryPartCategoryPlanRateList(MesPartCategoryPlanRate partCategoryPlanRate);

    /**
     * 获取所有产品类别计划比例信息
     * @param organizeCode 工厂代码
     * @return 产品类别计划比例信息
     */
    @ApiOperation(value = "按条件查询产品类别计划比例信息", notes = "按条件查询产品类别计划比例信息")
    List<MesPartCategoryPlanRate> queryAllPartCategoryPlanRateList(String organizeCode);

    /**
     * 校验产品别是否存在
     * @param organizeCode 工厂代码
     * @param categoryCode 产品别
     * @return 产品类别计划比例信息
     */
    @ApiOperation(value = "校验产品别是否存在", notes = "校验产品别是否存在")
    Boolean checkPartCategoryPlanRateIsExist(String organizeCode, String categoryCode);

    /**
     * 新增产品类别计划比例信息
     * @param partCategoryPlanRate 产品类别计划比例信息
     * @return 产品类别计划比例数据
     */
    @ApiOperation(value = "新增产品类别计划比例信息", notes = "新增产品类别计划比例信息")
    MesPartCategoryPlanRate insertPartCategoryPlanRate(MesPartCategoryPlanRate partCategoryPlanRate);

    /**
     * 更新产品类别计划比例信息
     * @param partCategoryPlanRate 产品类别计划比例信息
     * @return 产品类别计划比例数据
     */
    @ApiOperation(value = "更新产品类别计划比例信息", notes = "更新产品类别计划比例信息")
    MesPartCategoryPlanRate updatePartCategoryPlanRate(MesPartCategoryPlanRate partCategoryPlanRate);

    /**
     * 根据id启用或禁用产品类别计划比例信息
     * @param idStr 产品类别计划比例信息ID
     * @param status 状态
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id启用或禁用产品类别计划比例信息", notes = "根据id启用或禁用产品类别计划比例信息")
    void updatePartCategoryPlanRateValidById(String idStr, Integer status, String userName);

    /**
     * 根据id删除产品类别计划比例信息
     * @param idStr 产品类别计划比例信息ID
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id删除产品类别计划比例信息", notes = "根据id删除产品类别计划比例信息")
    void deletePartCategoryPlanRateById(String idStr, String userName);

    /**
     * 获取产品类别计划比例信息
     * @param organizeCode 组织代码
     * @return 产品类别计划比例信息
     */
    @ApiOperation(value = "获取产品类别计划比例信息", notes = "获取产品类别计划比例信息")
    List<MesPartCategoryPlanRate> getPartCategoryPlanRateAllList(String organizeCode);

    /**
     * 获取产品类别计划比例信息
     * @param organizeCode 组织代码
     * @return 产品类别计划比例信息
     */
    @ApiOperation(value = "获取产品类别计划比例信息", notes = "获取产品类别计划比例信息")
    List<MesPartCategoryPlanRate> getPartCategoryPlanRateList(String organizeCode);

    /**
     * 获取产品别数据
     * @param organizeCode
     * @return
     */
    @ApiOperation(value = "获取产品别数据", notes = "获取产品别数据")
    Map<String, String> getCategoryMap(String organizeCode);

}
