package com.unis.crk.business.kcgl.mapper;

import com.unis.crk.business.kcgl.entity.DataKcglKcswDefault;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 库存管理-库存实物表 Mapper 接口
 * </p>
 *
 * @author TangSong
 * @since 2021-10-11
 */
public interface DataKcglKcswDefaultMapper extends BaseMapper<DataKcglKcswDefault> {
    /**
     * 自定义sql分页
     *
     * @param page
     * @param queryWrapper 看这里看这里，如果自定义的方法中需要用到wrapper查询条件，需要这样写
     * @return
     */
    IPage<Map<String, Object>> selectMyMapsPage(IPage<DataKcglKcswDefault> page, @Param(Constants.WRAPPER) QueryWrapper<DataKcglKcswDefault> queryWrapper);

    /**
     * 查询库存实物相关数据
     *
     * @param dataId
     * @return
     */
    List<Map<String, Object>> queryStockDetail(@Param("dataId") String dataId);

    /**
     * 根据查询到的库存明细查询在最近一次出入库的粮库编码，仓房、货位号、品种、粮食性质相同的粮食的库存数量
     *
     * @param unitId
     * @param ch
     * @param hwh
     * @param pz
     * @param hwxz
     * @return
     */
    List<Map<String, Object>> queryStockSum(@Param("unitId") String unitId,
                                            @Param("ch") String ch,
                                            @Param("hwh") String hwh,
                                            @Param("pz") String pz,
                                            @Param("hwxz") String hwxz
    );

    /**
     * 更新库存数量
     *
     * @param stockNum
     * @param unitId
     * @param ch
     * @param hwh
     * @param pz
     * @param hwxz
     * @return
     */
    int updateStoreByBiz(@Param("stockNum")Double stockNum,
                         @Param("unitId")String unitId,
                         @Param("ch")String ch,
                         @Param("hwh")String hwh,
                         @Param("pz")String pz,
                         @Param("hwxz")String hwxz);

    /**
     * 新增库存
     *
     * @param kcsl
     * @param zje
     * @param datId
     * @return
     */
    int addStoreByXckc(@Param("kcsl")double kcsl,
                       @Param("dataId")String datId);
}
