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

import cn.estsh.i3plus.ext.mes.pojo.model.ContainerExtModel;
import cn.estsh.i3plus.ext.mes.pojo.model.PartContainerCapacityExtModel;
import cn.estsh.i3plus.ext.mes.pojo.model.bu.MesContainerTypeModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesContainer;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerType;
import cn.estsh.i3plus.pojo.mes.bean.MesPartContainerCapacity;
import io.swagger.annotations.ApiOperation;

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

    /**
     * 按条件分页查询容器类型信息
     *
     * @param containerType 查询条件
     * @param pager 分页条件
     * @return 容器类型分页数据
     */
    @ApiOperation(value = "按条件分页查询容器类型信息", notes = "按条件分页查询容器类型信息")
    ListPager<MesContainerTypeModel> queryContainerTypeByPager(MesContainerType containerType, Pager pager);

    /**
     * 新增容器类型信息
     * @param containerType 容器类型信息
     * @return 容器类型数据
     */
    @ApiOperation(value = "新增容器类型信息", notes = "新增容器类型信息")
    MesContainerType insertContainerType(MesContainerType containerType);

    /**
     * 更新容器类型信息
     * @param containerType 容器类型信息
     * @return 容器类型数据
     */
    @ApiOperation(value = "更新容器类型信息", notes = "更新容器类型信息")
    MesContainerType updateContainerType(MesContainerType containerType);

    /**
     * 根据id启用或禁用容器类型信息
     * @param id 容器类型信息ID
     * @param status 状态
     * @param organizeCode 组织代码
     * @param userName 操作人
     * @return 结果
     */
    @ApiOperation(value = "根据id启用或禁用容器类型信息", notes = "根据id启用或禁用容器类型信息")
    int updateContainerTypeValidById(Long id, Integer status, String organizeCode, String userName);

    /**
     * 按条件分页查询容器信息
     *
     * @param container 查询条件
     * @param pager 分页条件
     * @return 容器分页数据
     */
    @ApiOperation(value = "按条件分页查询容器信息", notes = "按条件分页查询容器信息")
    ListPager<ContainerExtModel> queryContainerByPager(MesContainer container, Pager pager);

    /**
     * 新增容器信息
     * @param container 容器信息
     * @return 容器数据
     */
    @ApiOperation(value = "新增容器信息", notes = "新增容器信息")
    MesContainer insertContainer(MesContainer container);

    /**
     * 更新容器信息
     * @param container 容器信息
     * @return 容器数据
     */
    @ApiOperation(value = "更新容器信息", notes = "更新容器信息")
    MesContainer updateContainer(MesContainer container);

    /**
     * 根据id启用或禁用容器信息
     * @param id 容器信息ID
     * @param status 状态
     * @param organizeCode 组织代码
     * @param userName 操作人
     * @return 结果
     */
    @ApiOperation(value = "根据id启用或禁用容器信息", notes = "根据id启用或禁用容器信息")
    int updateContainerValidById(Long id, Integer status, String organizeCode, String userName);

    /**
     * 按条件分页查询产品容器容量配置信息
     *
     * @param partContainerCapacity 查询条件
     * @param pager 分页条件
     * @return 产品容器容量配置分页数据
     */
    @ApiOperation(value = "按条件分页查询产品容器容量配置信息", notes = "按条件分页查询产品容器容量配置信息")
    ListPager<PartContainerCapacityExtModel> queryPartContainerCapacityByPager(MesPartContainerCapacity partContainerCapacity, Pager pager);

    /**
     * 新增产品容器容量配置信息
     * @param partContainerCapacity 产品容器容量配置信息
     * @return 产品容器容量配置数据
     */
    @ApiOperation(value = "新增产品容器容量配置信息", notes = "新增产品容器容量配置信息")
    MesPartContainerCapacity insertPartContainerCapacity(MesPartContainerCapacity partContainerCapacity);

    /**
     * 更新产品容器容量配置信息
     * @param partContainerCapacity 产品容器容量配置信息
     * @return 产品容器容量配置数据
     */
    @ApiOperation(value = "更新产品容器容量配置信息", notes = "更新产品容器容量配置信息")
    MesPartContainerCapacity updatePartContainerCapacity(MesPartContainerCapacity partContainerCapacity);

    /**
     * 根据id启用或禁用产品容器容量配置信息
     * @param id 产品容器容量配置信息ID
     * @param status 状态
     * @param organizeCode 组织代码
     * @param userName 操作人
     * @return 结果
     */
    @ApiOperation(value = "根据id启用或禁用产品容器容量配置信息", notes = "根据id启用或禁用产品容器容量配置信息")
    int updatePartContainerCapacityValidById(Long id, Integer status, String organizeCode, String userName);

}
