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

import cn.estsh.i3plus.ext.mes.pojo.bean.MesTravelMenuFieldConfig;
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: xinwang.yi
 * @CreateDate: 2021/01/19 15:06 下午
 * @Description:
 **/
public interface IMesTravelMenuFieldConfigService {

    /**
     * 按条件分页查询履历菜单字段配置表信息
     *
     * @param travelMenuFieldConfig 查询条件
     * @param pager 分页条件
     * @return 履历菜单字段配置表分页数据
     */
    @ApiOperation(value = "按条件分页查询履历菜单字段配置表信息", notes = "按条件分页查询履历菜单字段配置表信息")
    ListPager<MesTravelMenuFieldConfig> queryTravelMenuFieldConfigByPager(MesTravelMenuFieldConfig travelMenuFieldConfig, Pager pager);

    /**
     * 新增履历菜单字段配置表信息
     * @param travelMenuFieldConfig 履历菜单字段配置表信息
     * @return 履历菜单字段配置表数据
     */
    @ApiOperation(value = "新增履历菜单字段配置表信息", notes = "新增履历菜单字段配置表信息")
    MesTravelMenuFieldConfig insertTravelMenuFieldConfig(MesTravelMenuFieldConfig travelMenuFieldConfig);

    /**
     * 更新履历菜单字段配置表信息
     * @param travelMenuFieldConfig 履历菜单字段配置表信息
     * @return 履历菜单字段配置表数据
     */
    @ApiOperation(value = "更新履历菜单字段配置表信息", notes = "更新履历菜单字段配置表信息")
    MesTravelMenuFieldConfig updateTravelMenuFieldConfig(MesTravelMenuFieldConfig travelMenuFieldConfig);

    /**
     * 根据id启用或禁用履历菜单字段配置表信息
     * @param id 履历菜单字段配置表信息ID
     * @param status 状态
     * @param organizeCode 组织代码
     * @param userName 操作人
     * @return 结果
     */
    @ApiOperation(value = "根据id启用或禁用履历菜单字段配置表信息", notes = "根据id启用或禁用履历菜单字段配置表信息")
    int updateTravelMenuFieldConfigValidById(Long id, Integer status, String organizeCode, String userName);


    /**
     * 按条件查询履历菜单字段配置表信息
     * @param menuCode 查询条件
     * @return 履历菜单字段配置表数据
     */
    @ApiOperation(value = "根据菜单代码查询履历菜单字段配置表信息", notes = "根据菜单代码查询履历菜单字段配置表信息")
    List<MesTravelMenuFieldConfig> getTravelMenuFieldConfigList(String organizeCode, Integer menuCode);

    /**
     * 获取所有履历菜单字段配置表信息，并按菜单代码&字段代码分组
     *
     * @param organizeCode 组织代码
     * @return 履历菜单字段配置表分页数据
     */
    @ApiOperation(value = "获取所有履历菜单字段配置表信息，并按菜单代码&字段代码分组", notes = "获取所有履历菜单字段配置表信息，并按菜单代码&字段代码分组")
    Map<String, MesTravelMenuFieldConfig> getTravelMenuFieldConfig(String organizeCode);
}


