package com.yh.saas.plugin.yiliangyiyun.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.yh.saas.plugin.yiliangyiyun.entity.WarehouseInOutInfo;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

/**
 * <p>
 * 记录出入库信息 服务类
 * </p>
 *
 * @author Gongdc
 * @since 2021-05-21
 */
public interface IWarehouseInOutInfoService extends IService<WarehouseInOutInfo> {
    /**
     * 待完成页面列表
     * @param warehouseInOutInfo
     * @return
     */
    Page<WarehouseInOutInfo> selectWarehouseInOutInfo(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 待完成页面列表(临时仓库)
     * @param warehouseInOutInfo
     * @return
     */
    Page<WarehouseInOutInfo> selectWarehouseInOutInfoTemporary(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 删除记录
     */
    void deleteWarehouse(String id);

    /**
     * 出入库
     */
    String InOutWarehouse(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 退回
     */
    String returnWarehouse(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 流转记录分页查询
     * @param warehouseInOutInfo
     * @return
     */
    Page<WarehouseInOutInfo> selectInfo(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 关键字查询
     * @param warehouseInOutInfo
     * @return
     */
    List<WarehouseInOutInfo> selectInfoByKeyWord(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 流转记录分页查询(临时仓库)
     * @param warehouseInOutInfo
     * @return
     */
    Page<WarehouseInOutInfo> selectInfoTemporary(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 临时仓库货名下拉
     * @param baseId
     * @return
     */
    List<WarehouseInOutInfo> selectTemporaryGoodsNameList(String baseId);


    /**
     * 出入库任务新增 编辑
     * @param warehouseInOutInfo
     * @return
     */
    String insertOrUpdateInOutTask(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 判断移库编号
     * @param moveTaskNo
     * @return
     */
    boolean selectTaskNo(String moveTaskNo);

    /**
     * 查看
     * @param
     */
    WarehouseInOutInfo getInfo(String id);

    /**
     * 查看当天出/入数量
     * @param positionId,type
     * @return
     */
    Integer count(String positionId,String inOutFlag);

    /**
     * 调整
     * @param warehouseInOutInfo
     */
    String adjustment(WarehouseInOutInfo warehouseInOutInfo);

    /**
     *查看已派车辆
     */
    List<WarehouseInOutInfo> selectDistributeCar(String contractNo);

    Integer selectCountByPhone(String phone);

    String selectCompId(String contractNo);

    void tesk(WarehouseInOutInfo warehouseInOutInfo,String flag);

    Integer selectCountCompany(String compId,String type);


    /**
     * 修改入库量
     * @param warehouseInOutInfo
     * @return
     */
    String updateStockQuantity(WarehouseInOutInfo warehouseInOutInfo);

    /**
     * 出入库
     */
    String newInOutWarehouse(WarehouseInOutInfo warehouseInOutInfo);

}
