package com.prolog.rdc.tms.app.service.business;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.app.model.dto.business.AllShipbillPageDTO;
import com.prolog.rdc.tms.app.model.dto.business.ShowContainerTemperatureDTO;
import com.prolog.rdc.tms.app.model.dto.business.StrategyBusinessTemperatureDTO;
import com.prolog.rdc.tms.app.model.vo.business.AllShipbillQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.ShowContainerTemperatureVO;
import com.prolog.rdc.tms.app.model.vo.business.SignInShipBillVO;
import com.prolog.rdc.tms.app.model.vo.business.ShipbillHeaderSaveVO;

import java.util.List;

/**
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/7/19 16:44
 */
public interface ShipbillService {

    /**
     * 快速开单
     *
     * @param shipbillHeaderSaveVO
     */
    void quickShipbillData(ShipbillHeaderSaveVO shipbillHeaderSaveVO);


    /**
     * 自动生成退回运单
     * @param signInShipBillVO
     */
    void createReturnShipBill(SignInShipBillVO signInShipBillVO);

    /**
     * 更新运单明细签收数量
     * @param signInShipBillVO
     */
    void updateSignInPcs(SignInShipBillVO signInShipBillVO);

    /**
     * 运单签收
     * @param signInShipBillVO
     */
    void signIn(SignInShipBillVO signInShipBillVO);

    /**
     * 销售单模式查询
     * @param
     * @return
     */
    Page<AllShipbillPageDTO> querySellAllShipbillPage(AllShipbillQueryVO vo);

    /**
     * 司机拒绝接单
     * @param shipBillIdList
     */
    void reject(List<String> shipBillIdList);

    /**
     * 司机接单
     * @param shipBillIdList
     */
    void receive(List<String> shipBillIdList);

    /**
     * 业务规则匹配-是否显示温度
     * @param shipBillIdList
     * @return StrategyBusinessTemperatureDTO
     */
    StrategyBusinessTemperatureDTO showTemperature(List<String> shipBillIdList);

    /**
     * 容器温度
     * @param vo
     * @return ContainerTemperatureDTO
     */
    ShowContainerTemperatureDTO containerTemperature(ShowContainerTemperatureVO vo);

}
