package com.prolog.upcloud.base.wh.operate.service;

import com.prolog.entity.vo.MarkTaskItemVO;
import com.prolog.entity.vo.OutBoundRequestVO;
import com.prolog.framework.core.pojo.Page;
import com.prolog.upcloud.base.wh.operate.dto.ReplenishIncidentallyDTO;
import com.prolog.upcloud.base.wh.operate.dto.ReplenishPassiveDTO;
import com.prolog.upcloud.base.wh.operate.vo.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * @author wujunjie
 * @date 2021-05-14
 */
public interface WmsReplenishService {
    List<ReplenishPassiveDTO> replenishPassive(ReplenishPassiveSaveVO saveVO);

    /**
     * 紧急补货
     *
     * @param saveVO 紧急补货信息
     */
    String replenishUrgent(ReplenishUrgentSaveVO saveVO);

    /**
     * 主动补货
     *
     * @param saveVO 主动补货信息
     */
    void replenishInitiative(ReplenishInitiativeSaveVO saveVO);

    /**
     * 补货确认
     *
     * @param confirmParamsVO 确认信息
     */
    void confirmReplenish(MoveConfirmParamsVO confirmParamsVO);

    void confirmReplenishOld(MoveConfirmParamsVO confirmParamsVO);

    /**
     * 自动补货确认
     * @param confirmParamsVO
     */
    void autoConfirmReplenish(MoveConfirmParamsVO confirmParamsVO);

    Page<ReplenishListVO> getReplenishList(ReplenishQueryVO queryVO);

    ReplenishPdaDetailVO getReplenishDetail(String detailId);

    void confirmReplenishDevice();

    void cancelReplenish(String[] detailIds);

    Page<ReplenishUnshelveVO> getReplenishUnshelveList(
            String warehouseId,
            String condition,
            String bldgId,
            String dcId,
            Integer pageNum,
            Integer pageSize,
            String businessType
    );

    List<ReplenishIncidentallyDTO> replenishIncidentally(ReplenishIncidentallyVO vo);

    void replenishPre(List<ReplenishPreVO> saveVOs);

    void autoBcPre(Map<String,Object> map);

    List<MarkTaskItemVO> exceedTask(List<MarkTaskItemVO> exceeds);

    List<OutBoundRequestVO> getRepSendEisParamsByWaveId(String waveId);
}
