package com.prolog.rdc.tms.service;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.pay.BmsBillPayFeeDetailDTO;
import com.prolog.rdc.tms.model.dto.pay.BmsLoadingBillPayFeeDTO;
import com.prolog.rdc.tms.model.dto.pay.BmsLoadingBillPayFeeInfoDTO;
import com.prolog.rdc.tms.model.dto.pay.BmsShipBillPayFeeDTO;
import com.prolog.rdc.tms.model.dto.pay.BmsShipBillPayFeeInfoDTO;
import com.prolog.rdc.tms.model.dto.shipbill.BmsLogOperationDTO;
import com.prolog.rdc.tms.model.dto.shipbill.BmsShipBillDTO;
import com.prolog.rdc.tms.model.dto.shipbill.BmsShipBillDetailDTO;
import com.prolog.rdc.tms.model.dto.shipbill.BmsShipBillPackageDTO;
import com.prolog.rdc.tms.model.entity.BmsBillPayFeeDetailModel;
import com.prolog.rdc.tms.model.entity.BmsBillPayFeeHeaderModel;
import com.prolog.rdc.tms.model.vo.pay.BmsPayFeeAddVO;
import com.prolog.rdc.tms.model.vo.pay.BmsPayQueryVO;

import java.util.List;

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

    /**
     * findShipBillFee
     * @param vo
     * @return
     */
    Page<BmsShipBillPayFeeDTO> findShipBillFee(BmsPayQueryVO vo);

    /**
     * findLoadingBillFee
     * @param vo
     * @return
     */
    Page<BmsLoadingBillPayFeeDTO> findLoadingBillFee(BmsPayQueryVO vo);

    /**
     * detailShipBillById
     * @param id
     * @return
     */
    BmsShipBillPayFeeInfoDTO detailShipBillById(Long id);

    /**
     * detailLoadingBillById
     * @param id
     * @return
     */
    BmsLoadingBillPayFeeInfoDTO detailLoadingBillById(Long id);

    /**
     * getDetail
     * @param id
     * @return
     */
    List<BmsBillPayFeeDetailDTO> getDetail(Long id);

    /**
     * getLog
     * @param id
     * @return
     */
    List<BmsLogOperationDTO> getLog(Long id);

    /**
     * addFee
     * @param vo
     * @return
     */
    void addFee(BmsPayFeeAddVO vo);

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

    /**
     * getItem
     * @param id
     * @return
     */
    List<BmsShipBillDetailDTO> getItem(Long id);

    /**
     * getPackage
     * @param id
     * @return
     */
    List<BmsShipBillPackageDTO> getPackage(Long id);

    /**
     * getAudit
     * @param id
     * @return
     */
    List<Object> getAudit(Long id);

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

    /**
     * findDetailModel
     * @param headerModel
     * @return
     */
    List<BmsBillPayFeeDetailModel> findDetailModel(BmsBillPayFeeHeaderModel headerModel);

}
