package com.prolog.rdc.tms.service;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.constant.enums.BusinessTypeEnum;
import com.prolog.rdc.tms.model.dto.loadingbill.BmsLoadingBillDTO;
import com.prolog.rdc.tms.model.dto.shipbill.BmsShipBillDTO;
import com.prolog.rdc.tms.model.vo.loadingbill.BmsLoadingBillQueryVO;
import com.prolog.rdc.tms.model.vo.loadingbill.BmsLoadingBillVO;

import java.util.List;

/**
 * @author hongbo.pan
 */
public interface BmsLoadingBillService {

    /**
     * findByCondition
     * @param vo
     * @return
     */
    Page<BmsLoadingBillDTO> findByCondition(BmsLoadingBillQueryVO vo);

    /**
     * detailById
     * @param id
     * @return
     */
    BmsLoadingBillDTO detailById(Long id);

    /**
     * saveOrUpdate
     * @param vo
     */
    void saveOrUpdate(BmsLoadingBillVO vo);

    /**
     * getShipBill
     * @param id
     * @return
     */
    List<BmsShipBillDTO> getShipBill(Long id);

    /**
     * 核算
     * @param idList
     * @param businessTypeEnum
     */
    void calculate(List<Long> idList, BusinessTypeEnum businessTypeEnum);

    /**
     * 提交
     * @param idList
     * @param businessTypeEnum
     */
    void submit(List<Long> idList, BusinessTypeEnum businessTypeEnum);

    /**
     * reIncomeCalculate
     * 运单修改-运单核算-派车单修改-派车单核算
     * @param id
     * @return
     */
    Integer reIncomeCalculate(Long id);

    /**
     * reIncomeCalculate
     * 运单修改-运单核算-派车单修改-派车单核算
     * @param id
     * @return
     */
    Integer rePayCalculate(Long id);

}
