package com.prolog.eis.service.inbound;

import com.prolog.eis.core.dto.route.CarryTaskCallbackDto;
import com.prolog.eis.dto.contaienr.EmptyContainerInboundDto;
import com.prolog.eis.dto.inbound.BestAreaDto;
import com.prolog.eis.dto.inbound.InBoundDto;
import com.prolog.eis.dto.inbound.InBoundSubListDto;
import com.prolog.eis.dto.inbound.InboundCarryTaskDto;
import com.prolog.eis.dto.page.InboundOrderReqDto;
import com.prolog.eis.dto.page.InboundOrderRespDto;
import com.prolog.eis.dto.wcs.BcrRequestDto;
import com.prolog.eis.dto.wcs.CallbackLayerDTO;
import com.prolog.eis.model.inbound.BizInboundTask;
import com.prolog.framework.core.restriction.Criteria;

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

public interface BizInboundTaskService {

    /**
     * 入库回告
     *
     * @param carryTaskCallbackDto
     * @return
     */
    void doInboundCallBack(CarryTaskCallbackDto carryTaskCallbackDto);

    /**
     * 获取入库任务
     *
     * @param bcrRequestDto
     * @return
     */
    BizInboundTask getWmsTask(BcrRequestDto bcrRequestDto) throws Exception;



    /**
     * 发送最佳区域的入库任务
     */
    void sendInboundBybestArea(BestAreaDto bestAreaDto,String bestArea) throws Exception;

    String findBestInAreaNo(BestAreaDto bestAreaDto)throws Exception;

    void updateInboundTaskStatus(BizInboundTask inboundTask);

    /**
     * 保存入库任务
     *
     */
    void saveInboundTask(List<InBoundDto> inBoundDtos) throws Exception;

    void emptyContainerInbound(EmptyContainerInboundDto emptyContainerInboundDto) throws Exception;

    void wmsInCallBack(BizInboundTask inboundTask) throws Exception;

    List<BizInboundTask> findByMap(Map map);

    void deleteById(Integer id);

    void inboundTimoutToHis(BizInboundTask bizInboundTask);

    public void saveInboundTaskDetail(BizInboundTask inboundTask, List<InBoundSubListDto> inBoundSubList) throws Exception;

    public void saveEmptyInboundTaskDetail(BizInboundTask bizInboundTask);

    String findBestAreaByType(String stockIdSub, String targetArea, String businessProperty,double deviceHeight) throws Exception;

    void inboundTaskConfirm(InboundCarryTaskDto req)throws Exception;

    List<BizInboundTask> findByCriteria(Criteria criteria);

    void inboundAgvCarryTask(BizInboundTask item)throws Exception;

    void sortingInboundCarryTask(BizInboundTask item,boolean fistStation) throws Exception;
    void doInboundBack(CarryTaskCallbackDto carryTaskCallbackDto);
    InboundCarryTaskDto wmsCarryTaskScan(String containerNo, String locationNo) throws Exception;

    List<InboundOrderRespDto> inboundOrderList(InboundOrderReqDto req);

    void doAgvInboundCallBack(CarryTaskCallbackDto carryTaskCallbackDto) throws Exception;

    void inboundReturnCallBack(CarryTaskCallbackDto carryTaskCallbackDto) throws Exception;

    String allocationRoadwayReq(CallbackLayerDTO callbackLayerDTO) throws Exception;

    void hjBack(CarryTaskCallbackDto carryTaskCallbackDto);

    void supplerBack(CarryTaskCallbackDto carryTaskCallbackDto) throws Exception;

    void emptyBack(CarryTaskCallbackDto carryTaskCallbackDto);
}

