package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.DriverledgerBillDTO;
import com.prolog.rdc.tms.model.dto.pay.BmsBillPayFeeDetailDTO;
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.vo.DriverledgerBillPageVO;
import com.prolog.rdc.tms.model.vo.pay.BmsPayFeeAddVO;

/**
 *
 * 费用管理-司机台账服务层
 *
 * @className :DriverledgerBillService
 * @author :fanzw
 * @date :2023/4/25
 * @description :
 *
 * @version :1.2.1
 *
 */
public interface DriverledgerBillService {

	/**
	 * 司机台账查询
	 *
	 * @param driverledgerBillPageVO
	 * @return Page<DriverledgerBillDTO>
	 */
	Page<DriverledgerBillDTO> pageDriverledgerBillDate(DriverledgerBillPageVO driverledgerBillPageVO);

	/**
	 * 司机台账查看
	 *
	 * @param id
	 * @return
	 */
	DriverledgerBillDTO viewDriverledgerBillDate(Long id);

	/**
	 * 费用录入
	 *
	 * @param bmsPayFeeAddVO
	 * @return
	 */
	void addFeeData(BmsPayFeeAddVO bmsPayFeeAddVO);

	/**
	 * 运单信息查询
	 *
	 * @param id
	 * @return
	 */
	List<BmsShipBillDTO> listShipBillData(Long id);

	/**
	 * 运单商品信息查询
	 *
	 * @param id
	 * @return
	 */
	List<BmsShipBillDetailDTO> listItemData(Long id);

	/**
	 * 运单包裹信息查询
	 *
	 * @param id
	 * @return
	 */
	List<BmsShipBillPackageDTO> listPackageData(Long id);

	/**
	 * 审批信息查询
	 *
	 * @param id
	 * @return
	 */
	List<Object> listAuditData(Long id);

	/**
	 * 费用信息查询
	 * 
	 * @param id
	 * @return
	 */
	List<BmsBillPayFeeDetailDTO> listFeeData(Long id);

	/**
	 * 费用信息提交
	 * 
	 * @param idList
	 */
	void submitFeeData(List<Long> idList);

	/**
	 * 操作日志查询
	 * 
	 * @param id
	 * @return
	 */
	List<BmsLogOperationDTO> listLogData(Long id);

	/**
	 * 司机费用查询
	 *
	 * @param driverledgerBillPageVO
	 * @return List<DriverledgerBillDTO>
	 */
	List<DriverledgerBillDTO> queryDriverFeeByBillData(DriverledgerBillPageVO driverledgerBillPageVO);
}
