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

import cn.estsh.i3plus.ext.mes.pojo.bean.MesCareerCorrelationCfg;
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;

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

    /**
     * 按条件分页查询事业别相关配置信息
     *
     * @param careerCorrelationCfg 查询条件
     * @param pager 分页条件
     * @return 事业别相关配置分页数据
     */
    @ApiOperation(value = "按条件分页查询事业别相关配置信息", notes = "按条件分页查询事业别相关配置信息")
    ListPager<MesCareerCorrelationCfg> queryCareerCorrelationCfgByPager(MesCareerCorrelationCfg careerCorrelationCfg, Pager pager);

    /**
     * 新增事业别相关配置信息
     * @param careerCorrelationCfg 事业别相关配置信息
     * @return 事业别相关配置数据
     */
    @ApiOperation(value = "新增事业别相关配置信息", notes = "新增事业别相关配置信息")
    MesCareerCorrelationCfg insertCareerCorrelationCfg(MesCareerCorrelationCfg careerCorrelationCfg);

    /**
     * 更新事业别相关配置信息
     * @param careerCorrelationCfg 事业别相关配置信息
     * @return 事业别相关配置数据
     */
    @ApiOperation(value = "更新事业别相关配置信息", notes = "更新事业别相关配置信息")
    MesCareerCorrelationCfg updateCareerCorrelationCfg(MesCareerCorrelationCfg careerCorrelationCfg);

    /**
     * 根据id启用或禁用事业别相关配置信息
     * @param idStr 事业别相关配置信息ID
     * @param status 状态
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id启用或禁用事业别相关配置信息", notes = "根据id启用或禁用事业别相关配置信息")
    void updateCareerCorrelationCfgValidById(String idStr, Integer status, String userName);

    /**
     * 根据id删除事业别相关配置信息
     * @param idStr 事业别相关配置信息ID
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id删除事业别相关配置信息", notes = "根据id删除事业别相关配置信息")
    void deleteCareerCorrelationCfgById(String idStr, String userName);

    /**
     * 获取事业别相关配置信息
     * @param organizeCode 组织代码
     * @param dataType 数据类型
     * @param dataKeyStart 时间起始
     * @param dataKeyEnd 时间截止
     * @return 事业别相关配置信息
     */
    @ApiOperation(value = "获取事业别相关配置信息", notes = "获取事业别相关配置信息")
    List<MesCareerCorrelationCfg> getCareerCorrelationCfgListOnlyByDataType(String organizeCode, String dataType, String dataKeyStart, String dataKeyEnd);

    /**
     * 获取事业别相关配置信息
     * @param organizeCode 组织代码
     * @param dataDimension 数据维度
     * @param dataType 数据类型
     * @param dataKeyStart 时间起始
     * @param dataKeyEnd 时间截止
     * @return 事业别相关配置信息
     */
    @ApiOperation(value = "获取事业别相关配置信息", notes = "获取事业别相关配置信息")
    List<MesCareerCorrelationCfg> getCareerCorrelationCfgList(String organizeCode, String dataDimension, String dataType, String dataKeyStart, String dataKeyEnd);


    /**
     * 获取事业别相关配置信息
     * @param organizeCode 组织代码
     * @param dataDimension 时间起始
     * @param dataType 数据类型
     * @param categoryCode 产品别代码
     * @return 事业别相关配置信息
     */
    @ApiOperation(value = "获取事业别相关配置信息", notes = "获取事业别相关配置信息")
    List<MesCareerCorrelationCfg> getCareerCorrelationCfgListByCategoryCode(String organizeCode, String dataDimension, String dataType, String categoryCode);

}
