package com.bailuntec.mapper;

import com.bailuntec.domain.dto.TransferTransitQuantity;
import com.bailuntec.domain.entity.DcDailyTransitFrom;
import com.bailuntec.domain.example.DcDailyTransitFromExample;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface DcDailyTransitFromMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    long countByExample(DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int deleteByExample(DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int insert(DcDailyTransitFrom record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int insertSelective(DcDailyTransitFrom record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    DcDailyTransitFrom selectOneByExample(DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    List<DcDailyTransitFrom> selectByExample(DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    DcDailyTransitFrom selectByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int updateByExampleSelective(@Param("record") DcDailyTransitFrom record, @Param("example") DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int updateByExample(@Param("record") DcDailyTransitFrom record, @Param("example") DcDailyTransitFromExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(DcDailyTransitFrom record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     */
    int updateByPrimaryKey(DcDailyTransitFrom record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    int upsert(DcDailyTransitFrom record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table dc_daily_transit_from
     *
     * @mbg.generated
     * @project https://github.com/itfsw/mybatis-generator-plugin
     */
    int upsertSelective(DcDailyTransitFrom record);

    // 慢查询
    @Deprecated
    List<TransferTransitQuantity> selectQuantityTransferTransitFrom();

    int calculateTransferTransitFrom(@Param("list") List<TransferTransitQuantity> list, @Param("localDate") LocalDate localDate);

    List<TransferTransitQuantity> selectQuantityTransferDelivery(@Param("localDate") LocalDate localDate);

    List<TransferTransitQuantity> selectQuantityTransferInbound(@Param("localDate") LocalDate localDate);

    int updateWarehouseName(@Param("localDate") LocalDate localDate);

    int updateSourceWarehouseName(@Param("localDate") LocalDate localDate);

    int updateSkuUnitPrice(@Param("localDate") LocalDate localDate);
}
