package com.op.mes.mapper;

import java.util.Date;
import java.util.List;

import com.op.mes.domain.BMS;
import com.op.mes.domain.Bucket;
import com.op.mes.domain.ProWetMaterialPlan;
import com.op.mes.domain.Product;
import org.apache.ibatis.annotations.Param;

/**
 * 湿料计划管理Mapper接口
 *
 * @author Open Platform
 * @date 2023-07-24
 */
public interface ProWetMaterialPlanMapper {
    /**
     * 查询湿料计划管理
     *
     * @param id 湿料计划管理主键
     * @return 湿料计划管理
     */
    public ProWetMaterialPlan selectProWetMaterialPlanById(String id);

    /**
     * 查询湿料计划管理列表
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 湿料计划管理集合
     */
    public List<ProWetMaterialPlan> selectProWetMaterialPlanList(ProWetMaterialPlan proWetMaterialPlan);

    /**
     * 新增湿料计划管理
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 结果
     */
    public int insertProWetMaterialPlan(ProWetMaterialPlan proWetMaterialPlan);

    /**
     * 修改湿料计划管理
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 结果
     */
    public int updateProWetMaterialPlan(ProWetMaterialPlan proWetMaterialPlan);

    /**
     * 删除湿料计划管理
     *
     * @param id 湿料计划管理主键
     * @return 结果
     */
    public int deleteProWetMaterialPlanById(String id);

    /**
     * 批量删除湿料计划管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProWetMaterialPlanByIds(String[] ids);

    /**
     * 根据时间范围查询范围内的计划列表
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<ProWetMaterialPlan> selectProWetMaterialPlanListByTime(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 通过班次id查询班次名称
     *
     * @param shiftId
     * @return
     */
    String selectShiftById(String shiftId);

    /**
     * 查询料罐list
     *
     * @return
     */
    List<Bucket> selectBucketList();

    /**
     * 获取物料信息list
     *
     * @return
     */
    List<Product> selectProductList();

    /**
     * 通过计划日期获取当前已经分配的料罐、物料、班次信息list
     *
     * @param planTime
     * @return
     */
    List<BMS> selectBMSList(Date planTime);

    /**
     * 查询该天-该班次-该料罐下的主计划id
     * @param planTime
     * @param bucketCode
     * @param shiftId
     * @return
     */
    String selectProWetMaterialPlanByPlanTime(@Param("planTime") Date planTime,@Param("bucketCode") String bucketCode,@Param("shiftId") String shiftId);
}
