package com.prolog.cs.biz.outbound.service;

import com.prolog.cs.basic.item.model.BaseMtlItemMst;
import com.prolog.cs.biz.outbound.model.PickTaskH;
import com.prolog.cs.biz.outbound.model.dto.check.CheckConfirmDTO;
import com.prolog.cs.biz.outbound.model.dto.check.CheckInfoDTO;
import com.prolog.cs.biz.outbound.model.dto.check.CheckMakeRedDTO;
import com.prolog.cs.biz.outbound.model.dto.check.LclAdjustDTO;
import com.prolog.cs.biz.outbound.model.vo.check.BarCodeDVO;
import com.prolog.cs.biz.outbound.model.vo.check.InnerCheckBillV2VO;
import com.prolog.cs.biz.outbound.model.vo.check.InnerCheckConfirmCheckVO;
import com.prolog.cs.biz.outbound.model.vo.check.LclVO;
import com.prolog.framework.common.message.RestMessage;

import java.util.List;

public interface InnerCheckV3Service {

    RestMessage<InnerCheckBillV2VO> getCurrentContainer(
            String containerCode,
            String stationCode,
            String billGroupId,
            String lclNo,
            Integer isDoubleCheck,
            String warehouseId
    );

    InnerCheckBillV2VO findPickupByContainerFunc(String containerCode, String stationCode,String pickTaskDId,
                                                 String billGroupId, String lclNo, Integer isDoubleCheck);

    LclVO queryLcl(String shipBillNo,String stationCode, PickTaskH pickTaskH, String lclNo, String containerCode,
                   Integer isDoubleCheck,List<BaseMtlItemMst> itemList);

    RestMessage<InnerCheckBillV2VO> makeCheckRed(CheckMakeRedDTO redDTO);

//    RestMessage<InnerCheckBillV2VO> checkItem(CheckInfoDTO checkInfoDTO);

    RestMessage<InnerCheckBillV2VO> checkItemByNum(CheckInfoDTO checkInfoDTO);

//    RestMessage<Boolean> lclAdjust(List<LclAdjustDTO> lclInfos);
//
//    List<BarCodeDVO> queryLclByBarcodeId(String barcodeId);

    RestMessage<InnerCheckConfirmCheckVO> containerCheckConfirm(CheckConfirmDTO checkConfirmDTO);

    RestMessage<InnerCheckConfirmCheckVO> confirmCheck(CheckConfirmDTO checkConfirmDTO);
}
