package com.ruoyi.order.mapper;

import java.util.List;
import com.ruoyi.order.domain.TbOrderDetail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 单据明细Mapper接口
 * 
 * @author 原动力
 * @date 2023-05-24
 */
public interface TbOrderDetailMapper 
{
    /**
     * 查询单据明细
     * 
     * @param id 单据明细主键
     * @return 单据明细
     */
    public TbOrderDetail selectTbOrderDetailById(Long id);

    /**
     * 查询单据明细列表
     * 
     * @param tbOrderDetail 单据明细
     * @return 单据明细集合
     */
    public List<TbOrderDetail> selectTbOrderDetailList(TbOrderDetail tbOrderDetail);

    /**
     * 新增单据明细
     * 
     * @param tbOrderDetail 单据明细
     * @return 结果
     */
    public int insertTbOrderDetail(TbOrderDetail tbOrderDetail);

    /**
     * 修改单据明细
     * 
     * @param tbOrderDetail 单据明细
     * @return 结果
     */
    public int updateTbOrderDetail(TbOrderDetail tbOrderDetail);

    /**
     * 删除单据明细
     * 
     * @param id 单据明细主键
     * @return 结果
     */
    public int deleteTbOrderDetailById(Long id);

    /**
     * 批量删除单据明细
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbOrderDetailByIds(Long[] ids);

    /**
     * 获取单据详细信息
     *
     * @param orderNumber 单据编号
     * @return 单据信息集合
     */
    List<TbOrderDetail> selectTbOrderDetailByOrderNumber(String orderNumber);

    /**
     * 统计单据明细
     *
     * @param orderNumber 单据编号
     * @return 结果
     */
    @Select("SELECT COUNT(id) FROM tb_order_detail WHERE order_number = #{orderNumber}")
    int countTbOrderDetailByOrderNumber(String orderNumber);

    /**
     * 统计单据明细
     *
     * @param orderNumber 单据编号
     * @param assetNumber 资产编号
     * @return 结果
     */
    @Select("SELECT COUNT(id) FROM tb_order_detail WHERE order_number = #{orderNumber} and asset_number = #{assetNumber}")
    int countTbOrderDetailByOrderNumberAndAssetNumber(@Param("orderNumber") String orderNumber, @Param("assetNumber") String assetNumber);
}
