package com.jeeplus.pubmodules.wareHouse.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.pubmodules.wareHouse.domain.WareHouseBasic;
import com.jeeplus.pubmodules.wareHouse.service.dto.WareHouseDto;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author: 王强
 * @create: 2022-12-29 16:39
 **/
public interface WareHouseBasicMapper extends BaseMapper<WareHouseBasic> {

    /**
     * 根据类型及物品名称查领用数量
     * @param wareHouseType
     * @param tradeName
     * @return
     */
    String getCollectNumByType(@Param("wareHouseType") String wareHouseType,@Param("tradeName") String tradeName);

    /**
     * 根据时间查询库存数量
     * @param tradeName
     * @param wareHouseType
     * @param createDate
     * @return
     */
    String getWareHouseInfoByTime(@Param("tradeName") String tradeName,@Param("wareHouseType")String wareHouseType,
                                  @Param("createDate")String createDate);

    /**
     * 根据时间查询库存数量
     * @param tradeName
     * @param wareHouseType
     * @param createDate
     * @return
     */
    String getCollectInfoByTime(@Param("tradeName") String tradeName,@Param("wareHouseType")String wareHouseType,
                                  @Param("createDate")String createDate);

    IPage<WareHouseDto> findList(Page<WareHouseDto> page, @Param(Constants.WRAPPER) QueryWrapper<WareHouseDto> queryWrapper);

    String getUserNameByUserId(String id);

    IPage<WareHouseDto> summaryList(Page<WareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<WareHouseDto> queryWrapper);

    IPage<WareHouseDto> summaryList2(Page<WareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<WareHouseDto> queryWrapper);

    IPage<WareHouseDto> wareHouseHistoryList(Page<WareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<WareHouseDto> queryWrapper);

    IPage<WareHouseDto> collectHistoryList(Page<WareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<WareHouseDto> queryWrapper);

    String findRequestId(String purchaseNo);

    /**
     * 根据领用类型和商品名称获取库存数量
     * @param collectTypeId
     * @param goodsName
     */
    WareHouseDto getByTypeAndGoodsName(@Param("goodsName")String goodsName,
                               @Param("collectTypeId")String collectTypeId);

    // 保存当前修改申请人
    void saveUpdateUser(@Param("basicId")String basicId, @Param("userId")String userId);

    // 根据入库数据id获取修改申请人
    String getUpdateUser(String basicId);

    // 根据入库数据id删除修改申请人
    void deleteUpdateUser(String basicId);

    // 根据商品名称和入库类型查询数据的 ‘提醒数量’ 以及 ‘是否提醒标记’
    List<WareHouseDto> getByTypeAndTradeName(@Param("tradeName")String tradeName,
                                       @Param("typeId")String typeId);

    void updateWarnFlagByTradeNameAndType(@Param("warnFlag")String warnFlag,
                                            @Param("tradeName")String tradeName,
                                            @Param("typeId")String typeId);

    void updateWarnNumByTradeNameAndType(@Param("warnNum")String warnNum,
                                         @Param("tradeName")String tradeName,
                                         @Param("typeId")String typeId);

    // 根据id清除修改原因
    void clearUpdateCause(String id);
}
