package com.prolog.cs.biz.inbound.service.rcv;

import com.prolog.cs.biz.inbound.dto.PageParam;
import com.prolog.cs.biz.inbound.dto.rcv.*;
import com.prolog.cs.biz.inbound.dto.task.TaskInstockDetailDTO;
import com.prolog.cs.biz.inbound.model.EisToWmsMiddle;
import com.prolog.cs.biz.inbound.model.rcv.RcvInstockLines;
import com.prolog.cs.biz.inbound.vo.EisWmsRequestParamVO;
import com.prolog.cs.biz.inbound.vo.InsockTaskRcvQueryVO;
import com.prolog.cs.biz.inbound.vo.RcvInstockLinesQueryVO;
import com.prolog.cs.biz.inbound.vo.RcvQueryVO;
import com.prolog.cs.biz.inbound.vo.task.InstockTaskQueryVO;
import com.prolog.cs.biz.inbound.vo.task.TaskQueryVO;
import com.prolog.entity.vo.InBoundRequestVO;
import com.prolog.framework.authority.core.dto.UserDTO;
import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;
import com.prolog.entity.vo.ContainerTailgatingRequestVO;

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

/**
 * @Description
 * @Date 2021-03-24
 */

public interface RcvInstockLinesService {

    /**
     * @Description
     * @Date 2021-03-24 add RcvInstockLinesDTO
     */
    public Object add(RcvInstockLinesDTO rcvInstockLinesDTO);

    /**
     * @Description
     * @Date 2021-03-24 edit RcvInstockLinesDTO
     */
    public Object edit(String pkId, RcvInstockLinesDTO rcvInstockLinesDTO);

    /**
     * @Description
     * @Date 2021-03-24 delete RcvInstockLinesDTO
     */
    public Object deletePkId(String pkId);

    /**
     * @Description
     * @Date 2021-03-24 delete RcvInstockLinesDTO
     */
    public Object delIds(List<String> pkIdList);

    /**
     * @Description
     * @Date 2021-03-24 page condition search RcvInstockLinesDTO
     */
    //	public Page<RcvInstockLinesDTO> findList(RcvInstockLinesDTO rcvInstockLinesDTO,PageParam pageParam);

    /**
     * @Description
     * @Date 2021-03-24 batchAdd RcvInstockLinesDTO
     */
    public Object batchAdd(List<RcvInstockLinesDTO> rcvInstockLinesDTOList);

    /**
     * @Description
     * @Date 2021-03-24 batchEdit RcvInstockLinesDTO
     */
    public Object batchEdit(List<RcvInstockLinesDTO> rcvInstockLinesDTOList);

    /**
     * @Description
     * @Date 2021-03-24 condition search all RcvInstockLinesDTO
     */
    public List<RcvInstockLinesDTO> findAll(RcvInstockLinesDTO rcvInstockLinesDTO);

    /**
     * @Description
     * @Date 2021-03-24 findOne RcvInstockLinesDTO
     */
    public RcvInstockLinesDTO findByPkId(String pkId);

    public Page<RcvInstockLinesDTO> findList(RcvInstockLinesQueryVO rcvInstockLinesQueryVO, PageParam pageParam);

    public Page<TaskInstockDetailDTO> extractTask(TaskQueryVO queryVO, PageParam pageParam);

    public Page<RcvHAndPDTO> extractRcvH(RcvQueryVO rcvQueryVO, PageParam pageParam);

    public Object splitTask(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

    public Object confirmSplitTask(TaskInstockDetailDTO taskInstockDetailDTO);

    public Page<RcvHDTO> extractRcvHAndPro(InsockTaskRcvQueryVO rcvQueryVO, PageParam pageParam);

    public Object doException(List<RcvInstockLinesDTO> rcvInstockLinesDTOList);

    public Object conditionExtractTask(InstockTaskQueryVO queryVO, PageParam pageParam);

    public TaskInstockDetailDTO addByPad(RcvInstockLinesDTO rcvInstockLinesDTO);

    String getSyncErpDataInfo(String rcvHeaderId);

    public Object getInstockPrintData(RcvInstockLinesQueryVO queryVO);

    public Object getInstockTaskArea(TaskQueryVO queryVO);

    public Object getInstockTaskDetailsByArea(TaskQueryVO queryVO, PageParam pageParam);

    public Object getInstockTaskContainer(String warehouseId, String mtlOwnerId, String enterpriseId, Integer pageNum, Integer pageSize);

    public Object taskMerge(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

    public Object batchAddAuto(List<RcvInstockLinesDTO> lineList, UserDTO userDTO);

    public Object getInstockInstockIn(String ids);

    /**
     * 执行回传erp TODO
     *
     * @param callList
     */
    public void excuteCallBackErp(List<RcvInstockLines> callList, boolean isExtCallBack);

    public Object pickInstockTask(InstockTaskQueryVO queryVO);

    public Object completeInstockTask(List<CompleteInstockTaskDTO> completeInstockTaskList);

    public Object batchAddNoCall2Erp(List<RcvInstockLinesDTO> rcvInstockLinesDTOList);

    public Object instockCall2Erp(String hids);

    public Object tansfor2AGV(InstockTaskQueryVO queryVO);

    public Object receiveAgv(Map<String, Object> map);

    public void excuteCallBackErp(List<RcvInstockLines> findByMap, Long sleepTimes);

    public Object replenisInstock(List<RcvInstockLinesDTO> rcvInstockLinesDTOList);

    public void excuteExtCallBack(List<RcvInstockLines> instockList);

    public List<EisToWmsMiddle> acceptEisToWmsRequestMessage(EisWmsRequestParamVO vo);

    public List<InBoundRequestVO> receiveInStockWms(String string);

    public void autoEisWmsMessageToUpTask();

    public void autoOmsIncomingBackTask();

    Object queryUpTaskDetail(InstockTaskQueryVO queryVO);

    public Page<RcvInstockLinesDTO> findListNew(RcvInstockLinesQueryVO rcvInstockLinesQueryVO, PageParam pageParam);


    public List<Map<String, String>> queryRoomInfo(String warehouseId);


    public List<Map<String, String>> queryAreaInfo(String warehouseId);

    Page<TaskInstockDetailDTO> getMyTask(TaskQueryVO queryVO, PageParam pageParam);

    List<TaskInstockDetailDTO> claimPutawayTask(InstockTaskQueryVO vo);

    public Object bindPalletNo(TaskInstockDetailDTO taskInstockDetailDTO);

    List<ContainerTailgatingRequestVO> containerTailgating();

    public void acceptEisContainerMessage(EisWmsRequestParamVO vo);

    RestMessage<Map<String,String>> checkTokenExp();

    Object addByPadV2(RcvInstockLinesDTO rcvInstockLinesDTO);
}
