package com.unis.crk.cplbusiness.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.unis.crk.cplbusiness.entity.DataKcglCplfcbgzDefault;
import com.unis.crk.cplbusiness.entity.DataKcglCplxckcDefault;
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.Map;

/**
 * <p>
 * 成品粮形成库存 Mapper 接口
 * </p>
 *
 * @author TangSong
 * @since 2022-03-21
 */
public interface DataKcglCplxckcDefaultMapper extends BaseMapper<DataKcglCplxckcDefault> {
    /**
     * 自定义sql分页
     *
     * @param page
     * @param queryWrapper 看这里看这里，如果自定义的方法中需要用到wrapper查询条件，需要这样写
     * @return
     */
    IPage<Map<String, Object>> selectMyMapsPage(IPage<DataKcglCplxckcDefault> page, @Param(Constants.WRAPPER) QueryWrapper<DataKcglCplxckcDefault> queryWrapper);


    /**
     * 成品粮入库环节生成形成库存
     *
     * @param dataId
     * @param loginName
     * @param sum
     * @param flowName
     * @param storeWorkType
     * @param cplRk
     * @return
     */
    int addInStock(@Param("dataId") String dataId,
                   @Param("loginName") String loginName,
                   @Param("sum") String sum,
                   @Param("flowName") String flowName,
                   @Param("storeWorkType") Short storeWorkType,
                   @Param("cplRk") String cplRk);


    /**
     * 成品粮出库环节生成形成库存
     *
     * @param dataId
     * @param loginName
     * @param flowName
     * @param storeWorkType
     * @param cplCk
     * @return
     */
    int addOutStock(@Param("dataId") String dataId,
                    @Param("loginName") String loginName,
                    @Param("flowName") String flowName,
                    @Param("storeWorkType") Short storeWorkType,
                    @Param("cplCk") String cplCk);

    /**
     * 成品粮期初环节生成形成库存
     *
     * @param dataId
     * @param loginName
     * @param flowName
     * @param storeWorkType
     * @param cplQc
     * @return
     */
    int addQckcStock(@Param("dataId") String dataId,
                     @Param("loginName") String loginName,
                     @Param("flowName") String flowName,
                     @Param("storeWorkType") Short storeWorkType,
                     @Param("cplQc") String cplQc);

    /**
     * 成品粮库存变动损益环节生成形成库存
     *
     * @param dataId
     * @param loginName
     * @param flowName
     * @param storeWorkType
     * @param cplKcbd
     * @return
     */
    int addKcbdStock(@Param("dataId") String dataId,
                     @Param("loginName") String loginName,
                     @Param("flowName") String flowName,
                     @Param("storeWorkType") Short storeWorkType,
                     @Param("cplKcbd") String cplKcbd);
    /**
     * 成品粮库存变动移仓环节生成形成库存
     *
     * @param dataId
     * @param loginName
     * @param flowName
     * @param storeWorkType
     * @param cplKcbd
     * @return
     */
    int addKcbdYcStock(@Param("reverseDataId") String reverseDataId,
                       @Param("dataId") String dataId,
                       @Param("loginName") String loginName,
                       @Param("flowName") String flowName,
                       @Param("storeWorkType")Short storeWorkType,
                       @Param("cplKcbd") String cplKcbd);
    /**
     * 获取保管台账
     *
     * @param dataId
     * @param loginName
     * @param flowName
     * @param storeWorkType
     * @param cplKcbd
     * @return
     */
    int addKcbdXzbhStock(@Param("reverseDataId") String reverseDataId,
                         @Param("dataId") String dataId,
                         @Param("loginName") String loginName,
                         @Param("flowName") String flowName,
                         @Param("storeWorkType")Short storeWorkType,
                         @Param("cplKcbd") String cplKcbd);

    IPage<Map<String, Object>> findPageVoBgtz(IPage<DataKcglCplxckcDefault> p, @Param(Constants.WRAPPER) QueryWrapper<DataKcglCplxckcDefault> queryWrapper);
}
