package com.hzs.scm.ic.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.scm.ic.IcAvailableNum;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.common.domain.scm.ic.ext.IcOnHandNumExt;
import com.hzs.common.domain.scm.pub.ScmItemSpecs;
import com.hzs.scm.ic.param.AvailableNum;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 可用量 Mapper 接口
 * </p>
 *
 * @author hzs
 * @since 2023-12-09
 */
public interface IcAvailableNumMapper extends BaseMapper<IcAvailableNum> {

    /*
     * @description: 出入口的时候更新原来现存量的数量
     * @author: sui q
     * @date: 2023/11/22 17:04
     * @param: null null
     **/
    Integer updateAvailableNumByNum(IcAvailableNum availableNum);

    /*
     * @description: 入库单是新增或修改 可用量表
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcAvailableNumByIcOnHandNum(@Param("availableNumList") List<IcAvailableNumExt> availableNumList);

    /*
     * @description: 查询产品是否存在现存量表
     * @author: sui q
     * @date: 2023/11/22 15:04
     * @param: null null
     **/
    List<IcAvailableNumExt> queryIcAvailableNumByCondition(@Param("icOnHandNum") IcOnHandNumExt icOnHandNum, @Param("scmItemSpecsList") List<ScmItemSpecs> scmItemSpecsList);

    /*
     * @description: 下单时验证可用量
     * @author: sui q
     * @date: 2023/12/11 10:01
     * @param: null null
     **/
    List<IcAvailableNumExt> queryAvailableNumByProduct(@Param("availableNumList") List<IcAvailableNum> availableNumList);

    /*
     * @description: 下单时验证可用量
     * @author: sui q
     * @date: 2023/12/11 10:01
     * @param: null null
     **/
    List<IcAvailableNumExt> queryAvailableNumByAvaliable(@Param("availableNumExt") IcAvailableNumExt availableNumExt);

    /*
     * @description: 根据查询条件查询可用量
     * @author: sui q
     * @date: 2023/12/18 15:10
     * @param: null null
     **/
    List<IcAvailableNumExt> queryAvailableNumByCondition(AvailableNum availableNum);

    /*
     * @description: 根据销售订单查询可用量，封装数据
     * @author: sui q
     * @date: 2024/4/17 11:18
     * @param: null null
     **/
    List<IcOnHandNumExt> queryAvailableNumByOrder(@Param("saOrderExt") SaOrderExt saOrderExt);
}
