package com.engine.salary.mapper.sicategory;

import com.engine.salary.entity.sicategory.dto.ICategoryListDTO;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author weaver_cl
 * 
 * @Date 2022/3/9
 * @Version V1.0
 **/
public interface ICategoryMapper {


    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 返回记录，没有返回null
     */
    ICategoryPO getById(Long id);


    ICategoryPO getByIdAndDataType(@Param("id") Long id,@Param("dataType") Integer dataType);


    /**
     * 查询所有
     * @return
     */
    List<ICategoryPO> listAll();


    /**
     * 根据福利名称获取
     * @param insuranceName
     * @return
     */
    List<ICategoryPO> listByName(String insuranceName);

    /**
     * 新增，插入所有字段
     *
     * @param iCategoryPO 新增的记录
     * @return 返回影响行数
     */
    int insert(ICategoryPO iCategoryPO);

    /**
     * 更新，更新修改的字段
     * @param iCategoryPO
     * @return
     */
    void update(ICategoryPO iCategoryPO);


    /**
     * 根据id更新状态
     * @param iCategoryPO
     */
    void updateById(ICategoryPO iCategoryPO);


    /**
     * 根据id更新福利名称
     * @param iCategoryPO
     */
    void updateNameById(ICategoryPO iCategoryPO);

    /**
     * 根据id更新福利名称和缴费对象
     * @param iCategoryPO
     */
    void updateNameAndPayScopeById(ICategoryPO iCategoryPO);

    /**
     * 根据类型查询福利类型
     *
     * @return
     */
    List<ICategoryPO> listByWelfareType(@Param("welfareType") Integer welfareType,
                                        @Param("dataType") Integer dataType);

    /**
     * 根据数据类型查询
     * @param dataType
     * @return
     */
    List<ICategoryPO> listByDataType(@Param("dataType") Integer dataType);

    /**
     * 自定义福利列表
     * @param welfareType
     * @return
     */
    List<ICategoryListDTO> listCustomInsurance(@Param("welfareType") Integer welfareType);

    /**
     * 根据id删除自定义福利项
     * @param iCategoryPO
     */
    void deleteCustomCategoryById(ICategoryPO iCategoryPO);
}
